"지난 10분 동안 사용된 교환은 x였습니다"로 o/p를 가져오는 명령이나 스크립트가 있습니까? 내 nagios 모니터링에 이 출력을 사용하고 싶습니다.
아래 스크립트에서 SAR을 사용하고 있으며 Nagios 모니터링을 위해 다양한 서버에서 실행하려고 합니다. 누구든지 아래 확인에서 스왑 경고를 받고 스왑 임계 값을 얻는 방법을 제안할 수 있습니까? 각 서버에서 다음 명령을 실행하면서 동적으로 계산해 보았는데 오류가 발생합니다.
제안해주세요.
# 2 = CRITICAL (SWAP usage higher than CRITICAL)
# 3 = UNKNOWN (Wrong usage)
SWAP_WARN=
SWAP_CRIT=
SWAPOUT_ACTIVITY_TEST=
## GET SWAP Warning and Critical values from the Machine
# 2 = CRITICAL (SWAP usage higher than CRITICAL)
# 3 = UNKNOWN (Wrong usage)
SWAP_WARN=
SWAP_CRIT=
SWAPOUT_ACTIVITY_TEST=
**## GET SWAP Warning and Critical values from the Machine
temp=$(swapon -s | tail -n 1 | awk '{print $3}' )
SWAP_WARN=$(echo '$(temp)*.20' | bc)
SWAP_CRIT=$(echo '$(temp)*.40' | bc)**
## FETCH ARGUMENTS
##while getopts "h:" OPTION; do
# case "${h}" in
# h)
# usage
# exit 3
# ;;
# ?)
# usage
# exit 3
# ;;
# esac
#done
## CHECK ARGUMENTS
if [ -z ${SWAP_WARN} ] || [ -z ${SWAP_CRIT} ] || [ ${SWAP_WARN} -gt ${SWAP_CRIT} ] ; then
usage
exit 3
fi
## GET SWAP INFO FROM MACHINE
cd /var/log/sa
FOR_VALUE=sa
FOR_DATE=$(date | awk '{print $3}')
SA=$FOR_VALUE$FOR_DATE
SWAPOUT_ACTIVITY_TEST=$(sar -S -f $SA | tail -n 2| head -n 1 | awk '{print $4}')
## CHECK SWAPPING ON MACHINE
if [ ${SWAPOUT_ACTIVITY_TEST} -lt ${SWAP_WARN} ]; then
## SWAP IS OK
LINE="OK! Swapout size in last 10 minutes : ${SWAPOUT_ACTIVITY_TEST} | swapout_size=${SWAPOUT_ACTIVITY_TEST}B;${SWAP_WARN};${SWAP_CRIT};"
echo $LINE
exit 0
elif [ ${SWAPOUT_ACTIVITY_TEST} -gt ${SWAP_WARN} ] && [ ${SWAPOUT_ACTIVITY_TEST} -lt ${SWAP_CRIT} ] || [ ${SWAPOUT_ACTIVITY_TEST} -eq ${SWAP_WARN} ]; then
## SWAP IS IN WARNING STATE
LINE="WARNING! Swapout size in last 10 minutes: ${SWAPOUT_ACTIVITY_TEST} | swapout_size=${SWAPOUT_ACTIVITY_TEST}B;${SWAP_WARN};${SWAP_CRIT};"
:
## FETCH ARGUMENTS
##while getopts "h:" OPTION; do
# case "${h}" in
# h)
# usage
# exit 3
# ;;
# ?)
# usage
# exit 3
# ;;
# esac
#done
## CHECK ARGUMENTS
if [ -z ${SWAP_WARN} ] || [ -z ${SWAP_CRIT} ] || [ ${SWAP_WARN} -gt ${SWAP_CRIT} ] ; then
usage
exit 3
fi
## GET SWAP INFO FROM MACHINE
cd /var/log/sa
FOR_VALUE=sa
FOR_DATE=$(date | awk '{print $3}')
SA=$FOR_VALUE$FOR_DATE
SWAPOUT_ACTIVITY_TEST=$(sar -S -f $SA | tail -n 2| head -n 1 | awk '{print $4}')
## CHECK SWAPPING ON MACHINE
if [ ${SWAPOUT_ACTIVITY_TEST} -lt ${SWAP_WARN} ]; then
## SWAP IS OK
LINE="OK! Swapout size in last 10 minutes : ${SWAPOUT_ACTIVITY_TEST} | swapout_size=${SWAPOUT_ACTIVITY_TEST}B;${SWAP_WARN};${SWAP_CRIT};"
echo $LINE
exit 0
elif [ ${SWAPOUT_ACTIVITY_TEST} -gt ${SWAP_WARN} ] && [ ${SWAPOUT_ACTIVITY_TEST} -lt ${SWAP_CRIT} ] || [ ${SWAPOUT_ACTIVITY_TEST} -eq ${SWAP_WARN} ]; then
## SWAP IS IN WARNING STATE
LINE="WARNING! Swapout size in last 10 minutes: ${SWAPOUT_ACTIVITY_TEST} | swapout_size=${SWAPOUT_ACTIVITY_TEST}B;${SWAP_WARN};${SWAP_CRIT};"
:
답변1
cron에 sar를 설정하여 이 정보를 수집할 수 있습니다. 그런 다음 nagios에서 사용자 정의 프로브를 생성하여 지난 10분 동안의 sar 결과를 읽습니다.
답변2
이 명령을 사용해 보십시오. 10분마다 스왑 사용량에 대한 정보를 제공합니다.
sar -W -f /var/log/sa/sa(날짜)
샘플 출력
오전 05:00:01 pswpin/s pswpout/s 오전 05:10:03 0.00 0.77 05:20:03 오전 10.00 45.08 05:30:02 오전 10.38 1.36 평균: 7.18 16.38