nagiosモニタredisメモリ使用状況スクリプト-shell実装
redis自身のinfoは、自分のメモリの使用状況を読み出し、config getで設定したメモリの最大値を読み出すことができます.したがって、redisメモリの使用状況を監視することができます.次のスクリプトでは、正常、警告、クリティカル警告、エラー(メモリ最大値が設定されていない)の4つの出力を考慮します.nagiosには0:正常、1:警告、2:クリティカル警告、3:不明の4つの戻り値があります.ここでは,0,1,2を用いた.このスクリプトは一般的には正常に使用できますが、今日は午後を振り回し、nagiosでエラーが表示されています.そのため、nagiosプロファイルが間違っていると思っていました.多くの資料を調べても、解決策が見つかりませんでした.スクリプトに問題があるかどうかは考えられませんでした.結局、このshellスクリプトsourceの結果は正しいです.その後、何気なくこのスクリプトを見て、監視表示の内容と合わないような気がしました.このスクリプトに問題があるかどうかを考え始めます(解決策は言わない).最終的な解決策はredis-cliを絶対経路に変更することであり,このとき出力が正しく,その後の修正方向はパラメータを与えることによって監視され,このバージョンは比較的粗末で,問題があり,避けられない.
#!/bin/bash
#
#
NORMAL_MSG="redis_memory is OK!"
WARONG_MSG="redis_memory is WARONG!!"
CRITICAL_MSG="redis_memory is CRITICAL!!!"
ERROR_MSG="max_redis_memory is 0"
WARONG_NUM=70
CRITICAL_NUM=80
max_redis_memory=`echo 'config get maxmemory' | redis-cli | grep -v 'maxmemory'`
used_redis_memory=`redis-cli info | grep 'used_memory' | egrep -v 'used_memory_' | awk -F ":" '{print $2}'`
#echo $max_redis_memory
#echo $used_redis_memory
if [[ $max_redis_memory -ne 0 ]];then
percent_redis_memory=`awk 'BEGIN{printf "%d
",'$used_redis_memory'/'$max_redis_memory'*100}'`
# echo $percent_redis_memory
if [ $percent_redis_memory -ge $CRITICAL_NUM ];then
echo "CRITICAL!!! ${CRITICAL_MSG} value is ${percent_redis_memory}"
exit 2
elif [[ $percent_redis_memory -ge $WARONG_NUM ]];then
echo "WARONG!!! ${WARONG_MSG} value is ${percent_redis_memory}"
exit 1
else
echo "NORMAL ${NORMAL_MSG} value is ${percent_redis_memory}"
exit 0
fi
else
echo "ERROR!!! ${ERROR_MSG}"
exit 2
fi