トリガーで使用される条件式は非常に柔軟です。これらを使って、監視の解析結果に関する複雑な論理テストを作成することができます。
シンプルかつ便利な条件式の例を以下に記載します。
トリガー関数を使用して、収集値、現在時刻および他の要素を参照することができます。 サポートされている関数のリストをご覧ください。
ほとんどの数値関数は、秒数をパラメータとして受け入れます。
プレフィクス#を使って、パラメータに異なる意味がある旨を記述することができます。
関数コール 意味 | |
---|---|
sum(600) | 600秒内の全値の合計 |
sum(#5) | 直近5個の値の合計 |
プリフィクス#を使用している値に異なる意味 「n個前の値を選択させる」を持たせるので、直近3からさかのぼって値3、7、2、6、5が与えられている場合、last(#2) は7が返され、last(#5)は5が返されます。
パラメータを無視する関数に対しても、当該パラメータを付与する必要があります。例: last(0)
avg, count, last, minおよびmax関数は、秒単位の time_shift
パラメータをサポートします。このパラメータによって、過去の一定期間のデータを参照することができます。例えば、avg(1h,1d)は、1日前の1時間の平均値を返します。
トリガーは履歴情報の評価しか行いません。履歴が使用できない場合(特に、タイムシフト関連)には、トレンド情報が使用できないため、少なくともトリガー関数が要求する期間中は、履歴を保持する必要があります。
「300」秒の代わりに「5m」(分)、「86400」秒の代わりに「1d」(日)など、トリガー条件式でサポートされた単位記号 を使用することができます。「1K」は「1024」バイトを意味します。
次の演算子がトリガーに対してサポートされます(優先度の高いものから順番に実行):
優先度 演算 | 定義 | ||
---|---|---|---|
1 | / | 割り算 | |
2 | *** |掛け算 | |3** ** | ** 引き | |
4 | + | 足し算 | |
5 | < | より小さい値。演算子は以下のように定義されます: A<B ⇔ (A<=B-0.000001) |
|
6 | > | より大きい値。演算子は以下のように定義されます: A>B ⇔ (A>=B+0.000001) |
|
7 | # | 異なる値。演算子は以下のように定義されます: A#B ⇔ (A<=B-0.000001) | (A>=B+0.000001) |
|
8 | = | 同じ値。演算子は以下のように定義されます: A=B ⇔ (A>B-0.000001) & (A<B+0.000001) |
|
9 | & | 論理AND | |
10 | | | 論理OR |
www.zabbix.com上では、プロセッサ負荷が高すぎます
「www.zabbix.com:system.cpu.load[all,avg1]」によって、監視したパラメータのショートネームが与えられます。これは、サーバが「www.zabbix.com」であり、監視対象キーが「system.cpu.load[all,avg1]」であることを表しています。関数「last()」を用いることによって、最新値を参照します。最後に、「>5」 は、www.zabbix.comからの最新プロセッサ負荷の計測値が5よりも大きい時は、常に障害状態にあることを意味します。
www.zabbix.comは高負荷です
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
現在のプロセッサ負荷が5よりも大きい場合、または直近10分間のプロセッサ負荷が2よりも大きかった場合に、障害になります。
/etc/passwdが変更されました
関数diffの使用:
/etc/passwdのチェックサム前の値が最新値と異なる場合に、障害になります。
/etc/passwd, /etc/inetd.conf, /kernelなどの重要ファイルの変更を監視する際には、同様の条件式が役に立ちます。
誰かがインターネットから大容量ファイルをダウンロードしています
関数minの使用:
直近5分以内に、eth0上の受信バイト数が100 KB以上の時に、障害になります。
クラスター化されたSMTPサーバの両ノードが停止しました
1つの条件式で2つの異なるホストを使用する際にはご注意ください:
{smtp1.zabbix.com:net.tcp.service[smtp].last(0)}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last(0)}=0
smtp1.zabbix.comとsmtp2.zabbix.comの両方でSMTPサーバの両方が停止している時に、障害になります。
Zabbixエージェントをアップグレードする必要があります
関数strの使用:
Zabbixエージェントのバージョンがbeta8(恐らく1.0beta8)の場合に、障害になります。
サーバに接続できません
直近30分間に、「zabbix.zabbix.com」が5回以上接続できなかった場合に、障害になります。
直近3分以内にハートビートがありません
関数nodataの使用:
「tick」がタイプ 「Zabbix trapper」を持つ必要があります。当該トリガーを機能させるために、アイテム「tick」 を定義する必要があります。ホストからは、zabbix_senderを用いて、当該パラメータに対してデータを定期的に送信する必要があります。180秒以内にデータを受信しない場合には、トリガー値は「障害」となります。
夜間にCPUアクティビティーが行われます
関数timeの使用:
{zabbix:system.cpu.load[all,avg1].min(5m)}>2&{zabbix:system.cpu.load[all,avg1].time(0)}>000000&{zabbix:system.cpu.load[all,avg1].time(0)}<060000
夜間(00:00-06:00)に限定して、トリガーによってそのステータスを障害に変えることができます。
クライアントのローカル時間がZabbixのサーバの時間と同期化されているかをチェックします
関数fuzzytimeの使用:
サーバのMySQL_DBとZabbixサーバ上のローカル時間が10秒以上ずれている場合に、トリガーは障害状態に変わります。
(2番目のtime_shift
パラメータを使用)本日の平均負荷と昨日の同じ時間の平均値を比較します
直近1時間の平均負荷が、昨日の同じ時間の平均値を2倍以上になっている場合に、当該条件式が発動されます。
異なる状態に対して、異なる条件をトリガーにする必要がある場合があります。例えば、サーバ室の温度が20℃を超えた場合に「障害」のトリガーが生じるようにして、15℃以下になるまでは「障害」の状態を維持します。
これを行うには、次のトリガーを定義します。
サーバ室の温度が高すぎます
マクロ{TRIGGER.VALUE}の使用方法にご注意ください。マクロは最新のトリガー値を返します。
空きディスク容量が少なすぎます
障害:直近5分間で10GB以下
リカバリ:直近10分間で40GB以上
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) |
({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)
マクロ{TRIGGER.VALUE}の使用方法にご注意ください。マクロは最新のトリガー値を返します。
本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。