Profile picture

[Shell Script] CPU 로드(Load) 임계치 모니터링 스크립트

JaehyoJJAng2023년 05월 25일

사전 준비

[Linux] CPU, Memory 스트레스 부하주기 - stress 포스팅을 참고하여 stress 패키지 설치


소스코드

  • 현재 load 값과 기준치(MAX) 값을 비교하여 기준치 초과 시 ERROR 문구 출력

status.sh

#!/usr/bin/bash

MAX=1.0
LOAD=$(cat /proc/loadavg | awk '{print $1}')
CHECK=$(awk -v T=${MAX} -v L=${LOAD} 'BEGIN{ if ( L > T){print "Too high"}}')
TODAY="$(date) -"
FILE="load.log"

if [[ ! -e "${FILE}" ]]
then
  touch ${FILE}
fi

if [[ ${CHECK} = 'Too high' ]]
then
  echo -n "${TODAY}" | tee -a ${FILE}
  echo -n " LOAD : ${LOAD} : ERROR!" | tee -a ${FILE}
  echo "" >> ${FILE}
  echo
else
  echo -n "${TODAY}" | tee -a ${FILE}
  echo -n " LOAD : ${LOAD}" | tee -a ${FILE}
  echo "" >> ${FILE}
  echo
fi

부하 발생

stress 명령어로 CPU 100% 부하 발생시키기

$ stress -c 1
stress: info: [1891] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

스크립트 실행

부하를 발생시킨 상태에서 스크립트 실행해보기

$ bash load.sh
2023. 11. 13. () 15:10:06 KST - LOAD : 0.78
2023. 11. 13. () 15:10:10 KST - LOAD : 0.95
2023. 11. 13. () 15:11:30 KST - LOAD : 1.15 : ERROR!

Loading script...