2014年6月11日水曜日

Zabbixでtimeoutするアイテムを監視する方法

Zabbix Agentのタイムアウトは最大で30秒までしか設定できません
値を取得するのに30秒以上かかるアイテムの場合はZBX_NOTSUPPORTEDになってしまい監視できません
その場合、自分はcron+リダイレクトを使った方法で監視しているので紹介します
(cronを使わない方法(zabbix_sender等)もありますので参考程度に御覧ください)

■環境
CentOS release 5.10 (Final)
Zabbix Server 2.2.1

■設定方法
  1. Zabbixに登録するデータを取得するコマンドを作成する
  2. 今回は時間がかかるコマンドとして「du -sx /」を例として紹介します
  3. 結果が数字の部分だけになるようにコマンドを修正する
  4. du -sx / | awk '{print $1}'
  5. cronに登録する(例として毎時5分実行するように設定する)
  6. cron内で結果をファイルにリダイレクトさせる
  7. 5 * * * * du -s . | awk '{print $1}' > /var/tmp/du.size
  8. zabbix_agent.confを開く
  9. emacs /etc/zabbix/zabbix_agent.conf
  10. UserParameterを使ってリダイレクトしたファイルの情報を取得する設定を記載する
  11. UserParameter=get.du.size,cat /var/tmp/du.size
  12. zabbix-agentdを再起動する
  13. 一度cronが回ってファイルが作成できたら念のためzabbix_getで設定したキーの値が取得できるか確認する
  14. zabbix_get -s hostname -k get.du.size
  15. zabbix-serverのアイテムにget.du.sizeで監視するアイテムを登録する
  16. ポイントは更新間隔(秒)を「3600」にすることでcronの間隔と合わせています

以上で設定は完了です
これで1時間おきにduの結果がZabbix Serverに登録されているかと思います

■Tips
うまく値が取得できなくZBX_NOTSUPPORTEDになってしまう場合は、ファイルの権限を確認して読み込み権限を付与してください

cronの部分をJenkinsで巻き取り、値を取得したあとでzabbix_getでZBX_NOTSUPPORTEDにならないか確認するとより正確な監視ができるかと思います
(Zabbix Serverはアイテムが何かの拍子にZBX_NOTSUPPORTEDになっても警告してくれないのでそこをJenkinsでカバーするイメージです)
RESULT=`zabbix_get -s yoshi3 -k get.du.size2`
if [ $RESULT = "ZBX_NOTSUPPORTED" ]
then 
  echo NG
  exit 1
fi

0 件のコメント:

コメントを投稿