시스템 모니터링 툴 sar

[SAR(System Activity Reporter)를 이용한 시스템 모니터]


[시스템 환경]
Cpu : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
Ram : 1G
Hdd : 10G
아키텍쳐: 64bit
KVM 가상화 환경.
작성자 : 서비님(https://dslee1.blogspot.kr/)


--------------------------------------------------------------------------------------
이 포스팅과 관련된 포스팅

리눅스 디스크 관리 툴 iostat

리눅스 트래픽 모니터링 vnstat


1. 개요


sar명령어는 지금 현재의 시스템 상황보다는 이전의 로그를 바탕으로 어떤 시기에 어떤 일들이 있었는가를 측정하여 시스템의 장기적인 부하량을 예측하고 대처할 수 있도록 해 주는 프로그램이다.   쉽게 말해서 시스템의 모니터링 툴 중에 하나 이다.


2. 내용


그러면 sar 의 주요 기능을 한번 살펴보도록 하겠다.


sar에서 확인할 수 있는 사항
- I/O 전송량 - 페이징- 프로세스 생성 숫자
- 블락 디바이스 활동
- 인터럽트 - 네트워크 통계
- run 큐 및 시스템 부하 평균
- 메모리와 스왑 공간 활용 통계
- 메모리 통계
- CPU 이용도
- 특정 프로세스에 대한 CPU 이용도
- inode, 파일, 기타 커널 테이블에 대한 상태
- 시스템 스위칭 활동(context switch)
- 스와핑 통계 - 특정 프로세스 통계
- 특정 프로세스의 자식 프로세스 통계
- TTY 디바이스 활동


생각보다 많은 것들을 확인 할수 있는 좋은 툴이다.


[설치]


그럼 sar 설치는 어떻게 하면 될까?


간단히 yum install sysstate 명령을 이용해서  설치하면 간편하게 설치가 완료!!
아니면 아래 사이트에서도 다운로드 받아 설치가 가능하다.


사용옵션 정리
- sar명령어에 옵션을 주지 않고 수행했을 경우 -u옵션이 default로 적용된다.
- sar -A: 모든 관련정보를 출력한다.
- Shell> sar
%user : 사용자 레벨(application level) 에서 실행중일때의 CPU 사용률 (%)
%nice : 사용자 레벨(appliaction level) 에서 nice 가중치를 준 CPU 사용률(%)
%system : 시스템레벨(kernel) 에서 실행중일때의 CPU 사용률(%)
%iowait : system이 I/O요청을 처리하지 못한 상태에서의 CPU의 idle 상태인 시간의 비율(%)
%steal : virtual processer에 의한 작업이 진행되는 동안 virtual CPU에 의해 뜻하지 않는 대기시간이 생기는 시간의 비율(%)
%idle : CPU가 쉬고있는 시간의 %


[명령어 살펴보기]


sar 5 2




5초 간격으로 2회 수행.




sar -b


버퍼의 activity를 점검하여 I/O와 transfer의 통계를 출력한다.


[위에 표시된 숫자의 의미는 아래를 참조.]
tps: 물리적 디스크에서 발생한 초당 전송량이며, 여기서의 전송은 물리적 디스크에 요청한 I/O이다.
rtps: 물리적 디스크로부터 발생된 초당 읽기의 총 요청 횟수
bread/s: 드라이브 안의 블럭에서 초당 읽은 데이터의 총합.
bwrth/s: 드라이브 안의 블록에서 초당 쓰여진 데이터의 총합


sar -B


페이징 통계를 출력.




[위에 표시된 숫자의 의미는 아래를 참조.]
pgpgin/s: 디스크로부터 초당 paged in된 page의 총 수
papgout/s: 디스크에 초당 paged out 된 page의 총 수


sar -w


새롭게 만들어져 활동하고 있는 프로세스를 출력한다.




sar -d


* DEV: network device의 결과로부터의 통계
 IFACE: Network Interface 이름
 rxpck/s: 초당 받은 패킷수
 txpck/s: 초당 전송한 패킷수
 rxbyt/s: 초당 받은 bytes
 txbyt/s: 초당 전송한 bytes
 rxcmp/s: 압축된 패킷을 초당 받은 수
 txcmp/s: 압축된 패킷을 초당 전송한 수
 rxmcst/s: 초당 받은 다중 패킷 수




sar -r


가용메모리 점검 및 메모리 공간의 통계를 출력한다.


kbmemfree : 사용가능한 총 메모리의 양(kbytes)
kbmemused : 사용중인 총 메모리의 양(kbytes), 커널에서 사용중인 메모리는 제외
%memused : 사용된 메모리의 %
kbbuffers : 커널에서 buffer 메모리로 총 사용된 메모리의 양 (kbytes)
kbcached : 커널에서 cache data 로 사용된 총 메모리의 양(kbytes)
kbcommit : 현재 작업을 위해 필요한 메모리의 총량(kbytes),메모리 부족이 발생하지 않기 위한 RAM/swap 사용량의 추정치  
%commit : 현재 작업을 위해 필요한 메모리 총량의 %, kernel은 보통 메모리를 overcommits하므로 일반적으로 100%를 넘을 것이다.



sar -R


메모리 통계.


frmpg/s : 시스템에서 초당 자유로워진 memory pages 의 양 페이지의 크기는 시스템 아키텍쳐에따라 달라지며 보통 4K / 8K 이다.
bufpg/s : 시스템에서 초당 buffer 에 추가적으로 더해진 memory pages 의 양  
campg/s : 시스템에서 초당 system에 의해 cache된 memory pages 의 양




[그외의 명령어 정리]


sar -S → 스왑 점검 및 공간의 통계를 출력한다.
sar -v → 커널테이블 & 파일에서 inode의 상태를 출력한다.
sar -w → 작업 생성과 시스템 switching활동 현황 출력
sar -W → swapping의 통계 출력 


[sar 설정하기]


- sa1은 매 10분마다 시스템 모니터링한 결과를 /var/log/sa/saXX파일에 바이너리 형태로 기록한다. XX는 기록하는 날짜이다.
- sa2 -A는 23시 53분에 바이너리 파일을 읽어서 사람들이 볼 수 있도록 보고서를 만든다. /var/log/sa/sarXX 형태로 기록된다. sa1에서 5 3이라고 해놓으면 매 10분마다 실행을 하면서 5초동안 3번을 기록한다는 뜻이다.
- sar를 이용하여 각 결과 값을 위에 설명한 옵션을 이용하여 확인하면 된다.


3. 마무리


지금까지 sar 에 대해서 살펴보았다. 시스템 관리를 하다보면, 부하가 언제부터 진행이 되었고, 현재 시스템에서 어떠한 곳에 부하가 많이 발생하는지 체크할수 있는 프로그램으로 좋을것 같다.
사용법도 어렵지 않고, 가볍게 사용할수 있으며,  각 프로세스의 사용률을 % 단위로 알수 있어서 좋은 점수를 주고 싶다.