vmstat 모니터링
vmstat 으로 리눅스 시트템 점유자원을 모니터링할 때 보기 편하게 시간정보와 실 메모리 사용량(%)을 표시하고 파일에 저장하는 방법을 알아본다.
man vmstat
vmstat - Report virtual memory statistics
vmstat
리눅스 시스템 부하를 모니터링할 때 vmstat 의 기본 출력으로 알아볼 수 있는 항목은 아래와 같으며 표시되는 기본 정보의 변화량을 초당 모니터링을 할 때 사용한다.
swpd 수치가 지속적으로 늘어난다던가 so(swap-out) 수치가 발생한다면 메모리 부족.
cpu 의 wa 항목이 발생한다면 프로그램을 개선해야 할 수도..
❯ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 6672532 29376 476016 0 0 86 8 14 19 0 0 100 0 0
vmstat 시간 출력
vmstat 에는 timestamp를 표시할 수 있는 옵션이 있고 아래와 같이 마지막 컬럼에 시간을 표시한다. (시간을 앞쪽에 표시하고 싶다.)
-t, –timestamp : Append timestamp to each line
❯ vmstat -t 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st KST
0 0 0 6638512 31392 485624 0 0 8 1 2 7 0 0 100 0 0 2023-11-17 22:32:30
0 0 0 6638288 31392 485624 0 0 0 0 8 94 0 0 100 0 0 2023-11-17 22:32:31
출력 포맷 수정
기본 출력 포맷은 시간이 제일 뒤에 표시되어 로그기록용으로 쓸 때 불편하여 제일 앞쪽에 추가해본다.
vmstat의 출력을 awk를 이용해서 파싱하고 제일 앞에 strftime(“%Y-%m-%d %H:%M:%S”) 으로 시간 포맷을 만들어 제일 앞에 추가한다.
리눅스에서 프로세스가 쓸 수 있는 메모리는 free+buff+cache 이라 (memoryTotal-$4-$3-$5)/7805212*100 수식으로 실제 메모리 값을 표시한다.
시스템의 전체 메모리 값은 아래의 명령어로 확인할 수 있다.
❯ cat /proc/meminfo | grep MemTotal
MemTotal: 7805252 kB
❯ free -k
total used free shared buff/cache available
Mem: 7805252 687712 6577348 3336 540192 6875372
Swap: 2097152 0 2097152
“vmstat”의 결과는 아래와 같이 표시된다.
파일에 쓰면서 화면에서 표시하기 위해 | tee logfilename.log 와 같이 tee 명령어를 사용한다.
❯ vmstat 1 | awk '{printf ( "%s %s %0.2f%\n", strftime("%Y-%m-%d %H:%M:%S"), $0, (7805212-$4-$3-$5)/7805212*100); fflush()}' | tee vmstat.log
2023-11-17 22:04:05 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 100.00%
2023-11-17 22:04:05 r b swpd free buff cache si so bi bo in cs us sy id wa st 100.00%
2023-11-17 22:04:05 2 0 0 6641580 31228 485612 0 0 16 2 4 9 0 0 100 0 0 14.51%
2023-11-17 22:04:06 0 0 0 6641588 31228 485612 0 0 0 0 23 120 0 0 100 0 0 14.51%
2023-11-17 22:04:07 0 0 0 6641588 31228 485612 0 0 0 0 8 95 0 0 100 0 0 14.51%