vmstat 모니터링

vmstat 모니터링

2023, Nov 17    

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%

참고