ログの監視において(Ack -> 復旧)

みなさま、知恵を拝借できたらと思います。
Active チェックでログファイルの監視を実施しており、ある文字列が発生するとトリガーが発行されるような監視を実施しております。
この時、監視画面において Monitoring -> Dashboard の System Status には、トリガの設定で指定した Severity でステータス異常の表示がされるかと思います。

その監視対象のログの性格上、復旧したときにその旨メッセージが出るわけではなく、エラーの時だけメッセージが出るようになっており、その都度対応を実施するわけですが、対応が完了すると、監視画面の Dashboard の System Status にあるステータス異常を削除し、Dashboard 上ではステータス異常のホストはなし としたいと考えております。
管理画面上の Issue に Ack を返す際に同時に status を正常に戻すようなことはできないでしょうか?つまり、管理画面の操作でstatusを変えたいと考えております。

トリガーの Expression としては、
{log[/var/log/httpd/error_log,XXX Error,UTF-8,100],str(Error)}=1
のような設定で、/var/log/error_log に XXX Error という文字列が出るとアラートを飛ばすようにしてます。

アドバイスいただけますと幸いでございます。
よろしくお願いいたします。
わかりにくい内容でしたら、ご指摘いただけたらと思います。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー tsuzuki の写真

鈴木です。

Zabbixの仕様上、希望されている動作はできません。
log[/var/log/httpd/error_log,XXX Error,UTF-8,100] にエラーでない文字列が入らない限り、ステータスは正常に変化しません。

ただ、一応、無理矢理ステータスを変更する方法もあります。
それは zabbix_sender を利用して実際には存在しないデータを log[/var/log/httpd/error_log,XXX Error,UTF-8,100] に送ることです。
以下のようなコマンドをZabbixサーバーで実行してください。

# /usr/sbin/zabbix_sender -z localhost -s 対象ホスト名 -k 'log[/var/log/httpd/error_log,XXX Error,UTF-8,100]' -o RECOVERED

そうすると、log[/var/log/httpd/error_log,XXX Error,UTF-8,100] のヒストリーに「RECOVERED」というデータが入り、その結果ステータスが正常に変わります。
あとは、これを「管理」の「スクリプト」に登録すると一応Web画面のマップ上などで実行できるかと思います。

ただ、この手法にはいくつか問題があると思います。
(1.)実際にログに存在しないデータを送信してしまっているので、ログの履歴管理として不適切
(2.)アイテムごとに「スクリプト」の登録が必要
(3.)間違って別の「スクリプト」を実行してしまう危険性がある

これらの問題を発生させてでも、ステータスを正常にするべきか判断が必要かと思います。

ユーザー sonodahi の写真

tsuzuki/鈴木様
早速のご返信ありがとうございました。
希望する動作が無い、そして zabbix_sender の挙動について確認できました。
zabbix_sender 利用による問題についてもアドバイスいただきまして本当に有難うございました。
zabbix_sender コマンドについては、調査不足でしたので非常に助かりました。
運用方法について、再度検討し、ご教授頂きました方法を取り入れていけたらと考えております。

ユーザー sonodahi の写真

鈴木様、皆様、

先日、上記アドバイスいただいた内容で運用を実施しているのですが、zabbix_sender で RECOVERED というデータを送った場合、Configuration -> Actions にて mail を使った通知を実施していると、設定に "Recovery message" にチェックを入れていなくても RECOVERED の旨通知が発行されるようです。
Recovery message が不要な場合は、どのように設定を実施すればよろしいかアイデアをお持ちでしたら是非ご教授いただけますと幸いでございます。

よろしくお願いいたします。

ユーザー tsuzuki の写真

鈴木です。

まず、「RECOVERED」という文字列が特別な文字列だということはないです。

そのため、今回書かれていることは、zabbix_sender を使っていることや「RECOVERED」という文字列を使っていることとは別の問題だと考えています。

推測ですが、アクションの設定で「コンディション」の項目で「トリガーの値 = "障害"」と設定していないのではないでしょうか。
「トリガーの値 = "障害"」が設定されていない場合、トリガーの値が変化(正常->障害、障害->正常 の両方)するたびに通知が実行されてしまいます。
なので、まずは「コンディション」の項目を確認してみてください。

よろしくお願いします。

ユーザー sonodahi の写真

鈴木様

早速のご回答ありがとうございました。
鈴木様が書かれている内容が、マニュアルにも記載されていることを確認しました。私の調査不足でした、、、大変失礼しました、、、

http://www.zabbix.com/documentation/jp/1.8/manual/config/actions
"警告: リカバリメッセージやエスカレーション機能を有効にする前に、「Trigger value = PROBLEM」コンディションをアクションに追加してください。追加しない場合、修復イベントも同様にエスカレートされます。"

そのように設定を実施し、様子を見てみたいと思います。
ありがとうございました。