[Shell Script] 스왑 메모리 감시하기
스왑 메모리 감시하기
#!/bin/sh
swapcount_limit=10 #1
swapcount=$(vmstat 1 6 | awk 'NR >=4 {sum += $7 + $8} END{print sum}')#2
if [ "$swapcount" -ge "$swapcount_limit" ]; then #3
date_str=$(date '+%Y/%m/%d %H:%M:%S') #4
echo "[$date_str] Swap Alert: $swapcount (si+so)" #5
/home/user1/bin/alert.sh
fi
남은 메모리를 감시하여 스왑 발생시 경고하는 스크립트 입니다 .
vmstat 명령어
vmstat 명령어는 서버의 현재 리소스 상태를 표시합니다 .
명령어 인수로 1 3을 지정했습니다.
1초마다 3회 측정한다는 의미입니다 .
작성한 스크립트에서는 1 6 으로 지정했습니다 .
#1 : 스왓 횟수 감시 허용값을 설정합니다 .
스왓 아웃 횟수를 모두 더한값이 허용값 이상이면 경고 합니다 .
swapcount_limit=10
#2
- 스왑 횟수를 취득하기 위한 vmstat 명령어를 사용합니다 .
- si는 swap in ,so는 swap out 입니다.
- 7번 컬럼과 7번 컬럼의 더한 값이 지표입니다
- awk 명령어로 NR>=4 로 필터 해서 헤더 두줄과 첫번 째 출력값을 넘기고 4번 째 줄부 터 데이터를 출력합니다.
- 마지막 END 블록으로 sum을 출력하면 최근 5초간 스왑 횟술르 표시합니다 .
swapcount=$(vmstat 1 6 | awk 'NR >=4 {sum += $7 + $8} END{print sum}')
if [ "$swapcount" -ge "$swapcount_limit" ]; then
#4 : date 명령어로 현재 시간을 표시합니다 .
date_str=$(date '+%Y/%m/%d %H:%M:%S') #4
#5 : 경고 표시 후 스왑 발생 횟수를 출력합니다 .
echo "[$date_str] Swap Alert: $swapcount (si+so)" #5
/home/user1/bin/alert.sh
결과
stress 로 메모리에 과부화 주기
#stress --vm 2 --vm-bytes 128M --timeout 60s
새로운 터미널을 열고 작성한 스크립트를 실행합니다 .
댓글
댓글 쓰기