Tech Sketch Bucket of Technical Chips by TIS Inc.

フリーで使える統合監視の鬼、Zabbixでナウい監視をする〜Triggerを設定してActionを実行する〜

Pocket

この記事はeXcale Developer's Blogから移転されたものです。


eXcale 開発チームの泉谷(@syguer)です。

今回はインストール監視対象の追加に続き、Triggerを設定してActionを実行する方法について紹介します。
ここまででZabbixの基本的な機能についてひと通り扱えるようになります。


※以下、本記事ではZabbixのバージョンは2.2、OSはCent OS 6.5を使用します。
また、Zabbix server及びZabbix agentについてはインストール済みを想定しています。Zabbix serverのインストールについてはこちら、Zabbix agentのインストールについてはこちらをご覧ください。


TriggerとActionについて

Zabbixでは下図のように監視している値にしきい値を設定して何かしらのアクションを実行することができます。




そのための設定がTriggerとActionで、しきい値をTriggerで設定し、何を実行するかをActionで設定します。

今回は簡単にTriggerとActionの流れを見るために、例として前回設定したZabbix agentの死活が1分間確認できなかった場合にログファイルに書き出すという一連の流れを想定します。
言い換えると、「Zabbix agentの死活」というItemに、「1分間確認できなかった場合」というTriggerを設定し、「ログファイルに書き出す」というActionを実行するようにする、となります。

Triggerの設定

まずはTriggerの設定です。
Zabbix agentの死活(agent.ping)が1分間確認できなかったら問題として検知するように設定します。

[Configuration] => [Hosts]からTriggersをクリックします。

右上の[Create trigger]をクリックします。

設定画面で以下のように設定します。

最低限入れるべき項目について説明します。

・Name
Triggerの名前を設定します。
Macroを使用してホスト名などを動的に当てはめることができます。Macroの種類についてはこちらを参照してください。

・Expression
条件式を設定します。
条件式の評価がTrueである間はTriggerのvalueは"OK"となり、評価がFalseになるとTriggerのvalueがPROBLEMになります。
条件式には用意されている関数を使います。
この例ではnodata関数を使って「1分間データがこなかったら」という条件を表現しています。

・Severity
このTriggerに引っかかった場合の重症度を設定します。
本番運用では自分たちでどの程度の問題ならどのレベルにするか決めておく必要があります。
重症度は右に行くほど高くなります。
(低)Information < Warning < Average < High < Disaster (高) ・Enabled
Trigger設定時に有効にするかを指定します。
チェックを入れると設定した直後から有効になります。

その他の設定項目についてはこちらに詳細があるので参照してください。

項目を入力したら[Save]をクリックします。
Triggerに今作成したTriggerが表示されていれば完了です。

[Monitoring] => [Dashboard]からダッシュボードを開いてみましょう。
現在は問題が発生していないので以下のようにオールグリーンだと思います。

試しに監視しているホストのZabbix agentを停止してみます。
しばらく待って以下のようにTriggerが検知できていれば正常に動いています。


Actionの設定

次にActionを設定します。
多くの場合Actionではメール通知を設定するものと思いますが、今回はTriggerで検知 => Action実行の流れを簡単に見るために、Triggerに応じてログファイルに記録をつけるというActionを設定します。

まず、[Configuration] => [Action]を開き、[Create Action]をクリックします。

Actionの基本設定の画面になります。
Nameだけ入力し、あとはデフォルトのままにしておきます。
※今回は設定しませんが、Recovery messageにチェックを入れるとTriggerのValueがOKになった際にその通知を受け取ることができます。

次にConditionsをクリックします。

ここでは、Actionの条件を設定します。
デフォルトではTriggerのvalueがPROBLEMであることがAction実行の条件になっています。
通常はデフォルトのままで良いですが、Triggerの種類やホスト別に異なるActionを指定したい場合はここで条件を追加します。
今回はデフォルトのままにします。

続いてOperationsをクリックします。
ここでは、実際に実行するアクションを設定します。
Newをクリックします

今回はログに出力するコマンドを設定するので、まずOperation typeで「Remote command」を選択します。

Remote commandを選択すると項目がそれ用のものになります。
今回は以下のように設定します。

・Target listにCurrent hostを追加
・Execute onをZabbix serverに
・Commandsにファイル出力をするコマンドを記載(ここでもMacroが使えます)

Addをクリックするとoperationが登録されます。
[Save]をクリックしてActionを保存します。

ではTriggerを設定した時と同じように監視対象ホストのZabbix agentを落としてみましょう。(前項で落としたままの場合は、上げなおしてステータスがOKに戻ってから落としてください)

DashboardでZabbixが検知したことを確認したら、Zabbix serverが動いているホスト上で/tmp/alert_history.logにログが書き込まれているか確認します。

このように出力されていれば成功です。


余談:より実践的なAction

今回設定したActionのRemote commandはただコマンドを実行するだけなので、使い方次第で色々なことができます。
以前紹介したZabbixからHipchatへ通知する方法もこれをうまく利用しています。


最後に

今回は、Triggerを設定してActionを実行する方法を紹介しました。
ここまで紹介してきたインストール編監視対象を追加しよう編と今回で、Zabbixの基本的な機能は使えるようになっているはずです。
次回は実践的な内容として、ZabbixのアラートをAWSのSESを使ってメールを送信する方法について紹介したいと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?