본문 바로가기

IT인생_스크랩/Linux

리눅스 시스템 모니터링

출처 : http://www.ohmynux.com/?mid=linux&listStyle=gallery&page=2&document_srl=323

 



시스템 사용 정보 : vmstat
  - 프로세스, 가상 메모리, 페이징, 디스크, CPU 등의 상태를 측정할 수 있음
  - 멀티프로세서 시스템인 경우에는 모든 프로세서 사용량의 평균값을 나타냄
  - # vmstat [option] [주기] [횟수]
  procs -------memory-------- ---swap--- ----io---- --system-- -----cpu-----


  ☞ 각 필드에 대한 값들의 의미
   ① 프로세스 필드
    r : CPU 접근 대기 중인 실행 가능 프로세스의 수를 의미
    b : I/O 자원을 할당받지 못해 블록 된 프로세스의 수를 의미
   
   ② 메모리 필드
    swpd : 사용된 가상 메모리의 용량을 의미
    free : 현재 사용 가능한 여유 메모리의 용량을 의미
    buff : 버퍼에 사용된 메모리의 용량을 의미
    cach : 페이지 캐시에 사용된 메모리의 용량을 의미


   ③ 스왑 필드
    si : 디스크에서 스왑 된 메모리 용량을 의미
    so : 디스크로 스왑 되어 나간 메모리의 용량을 의미


   ④ 입출력 필드
    bi : 블록 장치로 보내진 블록을 의미
    bo : 블록 장치에서 받아온 블록을 의미


   ⑤ 시스템 필드
    in : 일 초당 인터럽트의 수를 의미
    cs : 일 초당 문맥 전환 작업 수를 의미


   ⑥ CPU 필드
    us : CPU가 사용자 수준 코드를 실행한 시간을 의미 (단위 : 백분율)
    sy : CPU가 시스템 수준 코드를 실행한 시간을 의미 (단위 : 백분율)
    id : CPU가 아무런 작업을 수행하지 않은 시간을 의미 (단위 : 백분율)
    wa : 입출력 대기를 의미


   ▷ 현재까지의 모든 시스템 이벤트 출력
     # vmstat -s
   ▷ 3초 주기로 시스템의 성능을 측정
     # vmstat 3    
   ▷ 1초 주기로 5회만 실행
     # vmstat 1 5


 ◎ 디스크 사용 정보 : iostat
  - 시스템 커널 버전, 호스트명, 날짜를 출력해 주고 일반적인 CPU 및 디스크 I/O 통계에 대한 정보를 표시
  - # iostat [option]
 
  ☞ option
   -c : user mode, system mode, I/O를 위한 waiting, idle 등에 사용된 사용 시간에 대한 백분율
   -t : ch 당 터미널에서 사용된 read, write의 character 수
   -x : 추가된 모든 디스크들의 상태 표시, 더 자세한 정보가 출력 (☆)


  ☞ 내용
  ① CPU 사용율
   %user : 용자가 사용하는 시간
   %nice : ice를 사용하여 프로세스 우선순위가 바뀐 프로세스가 사용하는 시간
   %sys : 시스템에서 사용하는 시간
   %idle : 휴지 상태의 시간


  ② 장치 사용율
   Device : DISK 장치 명
   Blk_read/s : 초당 읽혀진 512 바이트 블록 수
   Blk_wrtn/s : 초당 쓰여진 512 바이트 블록 수
   lk_read : 총 읽혀진 512 바이트 블록 수
   Blk_wrtn : 총 쓰여진 512 바이트 블록 수


   ▷ 3초마다 시스템의 정보를 표시
    # iostat 3
   ▷ 2초를 주기로 10번 실행
    # iostat 2 10


 ◎ 메모리 사용 정보 : free (☆)
  - 메모리의 사용량과 스왑 사용량에 대하여 간단한 정보를 보여주는 명령어
  ☞ 확인할 수 있는 메모리의 정보
   1) 메모리의 전체 용량
   2) 유휴 메모리의 양
   3) 사용 중인 메모리의 양
   4) 스왑(swap)메모리의 양
   5) 커널에서 사용되는 공유 메모리(shared memory)와 버퍼(buffer)의 양
   6) 캐시된 메모리의 양


  ○ 메모리 동작 방식
   - # free [option]
   ☞ option
    -b : 출력되는 메모리의 양을 byte로 표시
    -k : 기본값으로 출력되는 메모리의 양을 Kbyte로 표시
    -m : 출력되는 메모리의 양을 Mbyte로 표시
    -t : 기본 출력으로 메모리와 스왑을 함께 표시
    -o : 버퍼와 캐시를 생략
    -s : 지정한 초단위로 refresh 하여 메모리상태를 보여줌


   ▷ 총 사용량을 보여주고 5초 단위로 refresh
    # free -s 5 -t  
   ▷ 단위를 Mbyte로 출력
    # free -m


 ◎ CPU 프로세스 상황 정보 : top (Windows의 작업관리자 : ctrl+alt+del)
  - CPU 사용량, 프로세스 상태, 메모리 사용량과 같이 거의 모든 정보를 보여주는 명령어
  - 지속적으로 실행되도록 기본 설정되어 있음
  - # top
  ☞ top 명령어가 실행중일 때 사용하는 옵션
   1 : 평균 시스템 부하를 보여줌, single CPU일 경우에는 동일함
   space : 변환되는 값을 출력
   h, ? : top에서 사용하는 명령어의 도움말 출력
   i : 유휴 프로세스(idle process)를 출력하는 기능의 on/off
   m : 정보 출력 on/off
   t : 전체 상태 정보 출력 on/off
   k : 특정 프로세스에 시그널을 보내 프로세스를 종료
   r : 지정한 프로세스의 nice 값 재조정
   P : CPU의 사용률을 기준으로 정렬
   M : 메모리의 사용률을 기준으로 정렬
   s : 갱신 시간 결정
   q : top 종료
   N : PID를 기준으로 오름차순 정렬
   T : 실행 시간이 오래된 프로세스 기준으로 정렬
   n : 지정된 개수만큼의 프로세스 수만을 출력
   s : 지정된 초단위로 화면 갱신


  ☞ 각 행별 내용
   1) 1행 : 시스템의 가동 시간과 평균 부하의 숫자를 출력
     top - 13:25:06 up 1 day,  14:39,  1 user,  load average: 0.00, 0.00, 0.00
     → 현재시간(13:25:06)과 uptime 값(up 1 day)을 알 수 있으며, 현재 로그인 된 사용자의 수(1 user)와
        시스템의 최근 1분, 5분, 15분에 대한 각각의 평균 부하율(load average: 0.00, 0.00, 0.00)을 나타냄


   2) 2행 : 현재 실행중인 프로세스들의 상황
     Tasks:  52 total,   1 running,  51 sleeping,  0 stopped,  0 zombie
     → 전체 실행된 현재 프로세스의 수는 (52 total), 실행중인 프로세스(1 running), 유휴상태의 프로세스(51 sleeping),
        정지 된 프로세스(0 stopped), 좀비 프로세스(0 zombie)들의 상황을 알려줌


   3) 3행 : CPU의 사용에 대한 상황 ( 이 정보를 통해 CPU의 사용현황을 파악하여 CPU의 추가적인 보강 계획이나
            업그레이드 등의 계획을 세울 수 있음)
     Cpu(s) :   0.0% us,  0.3% sy,  0.0% ni, 99,7% id,  0.0% wa,  0.0% hi,  0.0% si
     → 사용자가 사용중인 CPU의 사용율(0.0% us), 시스템이 사용하는 CPU의 사용율(0.3% sy), nice 정책에 의해 사용되는
        CPU의 사용율(0.0% ni), 사용되지 않은 CPU의 미사용율(99.7% id), 입출력 대기상태의 사용율(0.0% wa)등의 상황에 대해 알려줌


   4) 4행 : 메모리의 사용에 대한 상황 ( 이 정보를 통해 메모리의 사용 현황에 대해 파악하고 메모리의 부족 현상 등을 분석하여,
            추가적인 메모리의 확장에 대해 고려할수 있음)
     Mem:   1035792k total,   272800k used,   762992k free,  32020k buffers
     → 전체 물리적인 메모리(1035792k total), 사용중인 메모리(272800k used), 사용되지 않은 여유 메모리(762992k free),
        버퍼된 메모리의 양(32020k buffers) 등의 상황에 대해 알려줌


   5) 마지막행 : 스왑메모리의 사용에 대한 상황 ( 스왑 메모리의 사용이 증가할 경우에는 물리적 메모리의 확장을 고려 )
     Swap:   1052248k total,      0k used,  1052248k free,    159980k cached
     → 전체 스왑 메모리(1052248k total), 사용 중인 스왑 메모리(0k used), 남아있는 스왑메모리(1052248k free),
        캐싱 메모리(159980k cached)등의 상황에 대해 알려줌


  ☞ 세부 정보 필드별 항목
   PID : 프로세스 ID (PID)
   USER : 프로세스를 실행시킨 사용자 ID
   PRI : 프로세스의 우선순위 (Priority)
   NI : NICE 값
   VIRT : 가상 메모리의 사용양(SWAP+RES)
   SHR : 분할된 페이지
   S : 프로세스의 상태
   %CPU : 프로세스가 사용하는 CPU의 사용율
    %MEM : 프로세스가 사용하는 메모리의 사용율
   TIME : 프로세스가 실행된 총 시간
   COMMAND : 실행된 명령어
   RES : 현재 페이지가 상주하고 있는 크기 (Resident Size)


 ◎ 시스템 평균 부하율 정보 : uptime
  - 시스템의 평균 부하율을 확인할 수 있는 명령어
  - 1분, 5분, 15분간의 시스템 평균 부하율을 출력
  - # uptime
  13:58:10  up 1 day,  15:12,  1 user,  load average: 0.00, 0,00, 0,00
  → 현재 시간(13:58:10), 1일 동안 시스템 재부팅 없이 운영중임(up 1 day), 로그인 한 시간(15:12),
     현재 시스템에 접속한 사용자(1 user), 1분, 5분, 15분간의 시스템 평균 부하율(load average: 0.00, 0.00, 0.00)의
     정보를 출력


 ◎ 시스템 리소스 정보 : sar (☆)
  - 시스템의 여러 리소스들의 성능을 측정할 수 있는 명령어
  - 운영중인 상태에서 자동으로 데이터를 수집할 수 있으며, 특정 파일을 사용하여 일정한 주기에 의해 데이터를 파일로
    정리할 수 있는데, 리눅스에서는 /var/log/sa/ 디렉토리에 sar<dd>이라는 파일명으로 저장됨( <dd>는 하루 전의 날짜 )
  - sa2 스크립트에 의해 실행되고 있으며, 주기적으로 실행될 수 있도록 /etc/cron.d/ 디렉토리에 sysstat에 등록되어 있음
  - 기본적으로 하루에 한번 11시 53분에 실행하여 하루 동안의 수집된 자료에 대한 리포트를 작성하게 됨
  - # sar


  ▷ 3초 간격으로 5회 반복 실행
   # sar 3 5
  ▷ sar 데이터 파일 리스토어
   # cd /var/log/sa
   # ls
   # sar -f sal1 | more
  ▷ DISK의 I/O 점검
   # sar -d 5 5  
  ▷ 특정 시간 동안의 점검
   # sar -s 03:10:00 -e 05:00:00
  ▷ process 점검
   # sar -q 1 10
  ▷ 메모리 점검
   # sar -r 1 10


* buffer
 - 장치(H/W) or 프로세스간, 회선간의 속도 차이를 조절할 때 사용
* cache
 - 한번 사용한 자원을 빠르게 재접근 할 수 있도록 해 줌