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