Skip to content

Commit

Permalink
vmstat
Browse files Browse the repository at this point in the history
  • Loading branch information
butteryoon committed Nov 17, 2023
1 parent bab0628 commit 133fd11
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions _posts/2023-11-17-vmstat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
layout: post
comments: true
title: "vmstat 모니터링"
description: "vmstat 결과에 시간과 메모리 실 사용량(%)을 표시 및 파일 저장"
img: powershell_title.jpg
date: 2023-11-17 10:00:00 +0900
last_modified_at: 2023-11-17 10:00:00 +0900
tags: [command-line, bash, vmstat, awk] # add tag
related: command-line
categories: tools
---

**vmstat** 으로 리눅스 시트템 점유자원을 모니터링할 때 보기 편하게 시간정보와 실 메모리 사용량(%)을 표시하고 파일에 저장하는 방법을 알아본다.

<!--more-->

## vmstat

리눅스 시스템 부하를 모니터링할 때 **vmstat** 의 기본 출력 포맷은 아래와 같다.

```
❯ 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
```

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%
```

## 참고

- [24 iostat, vmstat and mpstat Examples](https://www.thegeekstuff.com/2011/07/iostat-vmstat-mpstat-examples/){:target="_blank"}
Binary file added _posts/image-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 133fd11

Please sign in to comment.