ドハマリしたので書きます。
起こったトラブル
- errorログの件数を1日ごとに監視するスクリプト(check_errorlog.sh)をUserparameterに設定
- 1日1回実行して、結果をZabbixのグラフに出力
- 10/23は出力できていたのに、10/24が出力できていない。
対応方法
困ったときは監視サーバからzabbix_getコマンドを実行
[root@zabbix akirin5]# zabbix_get -s web-server -k errorlog.check ZBX_NOTSUPPORTED
もしかしたらUserparameter自体に問題があるのかも?切り分けのためにUserparameterで設定してある他の値を取得してみる。問題なくできる。
[root@zabbix akirin5]# zabbix_get -s web-server -k tcp.listen 46
該当の環境(web-server)でzabbixユーザになってコマンドは正常に実行できる
root@web-server # sudo -uzabbix ./check_errorlog.sh 41974
ZBX_NOTSUPPORTEDと言われたときに確認すべきポイント
Zabbixのフォーラムでも同じような人が何人か居ました。
まとめると
- zabbix_agentd.confのServerActiveの設定を確認
- zabbix_agentd.confのIncludeの設定を確認
- zabbix_agentd.confのHostnameの値がZabbixサーバ上で登録した値と一致しているか確認
- Zabbixエージェントのログ(/var/log/zabbix/zabbix_agentd.log)にエラーが出ていないか確認
- ログ監視の場合はパーミッションがZabbixユーザから見られるようになっているか確認
- セキュリティグループ・SElinuxは適切に設定されているか?
でもぬいぐるみはこれ全部違いました。そもそも昨日はちゃんと出力できてたし、zabbix_getもできてたんだから設定自体はあっているはずなのです。今日が何かおかしいのです。
原因
この2つを実行した時、前者のスクリプトのほうが格段に早く終わり、エラーを返してくることに気づきました。スクリプト自体はログファイルを全部舐めるので結構時間がかかる…
[root@zabbix akirin5]# zabbix_get -s web-server -k errorlog.check ZBX_NOTSUPPORTED
↑こっちが3秒くらいで終わって
root@web-server # sudo -uzabbix ./check_errorlog.sh 41974
↑こっちが20秒くらいかかる
試しにZabbixAgentとServerのタイムアウト時間を30秒にしてみる。(やりかたメモとるの忘れた)
もう一度zabbix_get
[root@zabbix akirin5]# zabbix_get -s web-server -k errorlog.check 41974
キタ━━━━(゚∀゚)━━━━!!
たまたまこの日、エラーログが大量に出力されていました。エラーログが少ない日だったらタイムアウト前に処理が終わるけれど、エラーログが大量に出力されている日は処理が終わらない、だからタイムアウトされるってことだったみたいです。
まとめ
重い処理をUserparameterで行うときはお気をつけください。ぬいぐるみのように午前中ムダにすることのなきよう…
はじめて取った値で「ZBX_NOTSUPPORTED」が出たときは以下を確認
- zabbix_agentd.confのServerActiveの設定を確認
- zabbix_agentd.confのIncludeの設定を確認
- zabbix_agentd.confのHostnameの値がZabbixサーバ上で登録した値と一致しているか確認
- Zabbixエージェントのログ(/var/log/zabbix/zabbix_agentd.log)にエラーが出ていないか確認
- ログ監視の場合はパーミッションがZabbixユーザから見られるようになっているか確認
- セキュリティグループ・SElinuxは適切に設定されているか?
今まで取れていた値が急に取れなかった場合は、タイムアウトの値を変更してみると良いでしょう。