トリガーは論理条件式として定義され、システム状態を表します。
トリガーのステータス(条件式)は、Zabbixサーバがこの条件式で使用されている値を新しく受信するたびに再計算されます。nodata()などの時間ベースの関数が条件式で使用される場合、30秒ごとに再計算されます。条件式に使用できる値を以下に示します。
値 | 明 |
---|---|
障害(PROBLEM) 通 | は、何かが発生したことを意味します。たとえば、プロセッサロードアベレージが非常に高い場合です。比較的古いバージョンのZabbixでは障害(TRUE)になります。 |
正常(OK) 通 | のトリガー状態です。比較的古いバージョンのZabbixでは正常(FALSE)になります。 |
不明 こ | 場合、Zabbixはトリガー条件式を評価できません。以下の原因が考えられます。 サーバから応答がない トリガー条件式を評価できない トリガー条件式が最近変更された |
トリガーで使用する条件式は非常に細かい指定も可能であり、監視する統計情報に関して複雑な論理テストを作成できます。トリガーでは以下の演算子がサポートされています(実行プライオリティの高い順)。
プライオリティ 演算子 | 定義 | ||
---|---|---|---|
1 | / | 除算 | |
2 | ***** | 乗算 | |
3 | - | 減算 | |
4 | + | 加算 | |
5 | < | より小さい | |
6 | > | より大きい | |
7 | # | 等しくない。この演算子は以下の式で定義されています。 A=B ⇔ (A<B-0.000001) | (A>B+0.000001) |
|
8 | = | 等しい。この演算子は以下の式で定義されています。 A=B ⇔ (A>B-0.000001) & (A<B+0.000001) |
|
9 | & | 論理積 | |
10 | ** | ** | 論理和 |
以下の関数がサポートされています。
<note important>全ての関数は数値のみを返します。たとえば、文字列との比較はサポートされません。 :::
関数 引 | サポー | される値のタイプ 定義 | |
---|---|---|---|
abschange | 無視 浮 | 小数、整数、文字列、テキスト、ログ 最新値と前回値の差を絶対値で返します。 |
<文字列の場合は以下の値を返します。 0 - 値が等しい 1 - 値が異なる |
avg | 秒数または回数 浮動小数、整 | 期間内の平均値を返します。 | ラメータには期間の長さ(秒単位)を指定します。 関数は2番目の省略可能なパラメータtime_shiftを使用できます。現在の平均値と、time_shift秒遡った平均値を比較する必要がある場合に便利です。たとえば、avg(3600,86400)は1日前の1時間の平均値を返します。 パラメータtime_shiftはZabbix 1.8.2以降でサポートされています。 |
change | 無視 浮 | 小数、整数、文字列、テキスト、ログ 最新値と前回値の差を返します。 |
<文字列の場合は以下の値を返します。 0 - 値が等しい 1 - 値が異なる |
count | 秒数または回数 浮動小数、整 | 、文字列、テキスト、ログ 期間内(秒単位)のヒストリ値の数またはコンディショ | を満たすlast(回数)値の数を返します。 関数は、2番目の省略可能なパラメータpattern、3番目のパラメータoperation、4番目のパラメータtime_shiftを利用できます。 例: count(600,12)はヒストリに保存されている値のうち「12」の出現回数を返します。 整数アイテム: 正確に一致 浮動小数: 値が±0.00001の許容範囲内にあれば一致とみなします。 like (デフォルト)、eq、neなどの演算子がサポートされます。サポートされる演算子は以下のとおりです。 サポートされている演算子: eq - 等しい ne – 等しくない gt – より大きい ge – 以上 lt – 未満 le – 以下 like (テキスト検索のみ) - 値にパターンが含まれれば一致とみなします。 例: count(600,12,"gt")は直近600秒の間にヒストリに保存されている値のうち「12」よりも大きい値の正確な出現回数を返します。 別の例: count(#10,12,"gt",86400)は、24時間前にヒストリに保存されている直近10個の値のうち「12」よりも大きい値の正確な出現回数を返します。 任意の値をカウントする必要がある場合、たとえば24時間前の直近600秒の場合はcount(600,,,86400)を使用します。 #numのパラメータはZABBIX 1.6.1以降でサポートされています。 パラメータtime_shiftはZabbix 1.8.2以降でサポートされています。 |
date | 無視 す | て 現在日付 | YYYYMMDD形式で返します。 例: 20031025 |
dayofweek | 無視 す | て 曜日を1 | 月曜日)から7(日曜日)までの範囲で返します。月曜 – 1、日曜 – 7. |
delta | 秒数または回数 浮動小数、整 | max()-min()と同 | 値を返します。 Zabbix 1.8.2以降では、2番目の省略可能なパラメータtime_shiftがサポートされています。使用例については関数avgを参照してください。 |
diff | 無視 浮 | 小数、整数、文字列、テキスト、ログ 以下の値を返します。 |
<1 - 最新値と前回値が異なる 0 - それ以外 |
fuzzytime | 秒数 浮 | 小数、整数 タイムスタンプ( | イテムの値)とZabbixサーバ時刻の差がN秒以内なら1、それ以外なら0を返します。 通常はsystem.localtimeと組み合わせて、ローカル時刻とZabbixサーバのローカル時刻が同期しているかどうかをチェックします。 |
iregexp | 1番目 - 文字列 文字列、2番目 - 秒数または#回数 | グ、テキスト この関数はregexpに類似し | いますが、大文字と小文字は区別されません。 |
last | 秒数 浮回数 | 小数、整数、文字列、テキスト、ログ 最新値を返します。以下のパラメータを使用秒 | ます。 - 無視 #回数 - N番目の値 例: last(0) - 常にlast(#1)と等しい last(#3) - 3番目に新しい値 関数は2番目の省略可能なパラメータtime_shiftを受け入れます。例: たとえば、last(0,86400)は1日前の直近の値を返します。 ヒストリの1秒以内に2つ以上の値が存在する場合、値の正確な順序は保証されません。 回数のパラメータはZABBIX 1.6.2以降でサポートされています。 パラメータtime_shiftはZabbix 1.8.2以降でサポートされています。 |
logseverity | 無視 l | g 最 | ログエントリの深刻度を返します。パラメータは無視されます。 0 - デフォルトの深刻度 N - 深刻度(整数、Windowsイベントログの場合に有効)。ZABBIXはWindowsイベントログのフィールド情報からログの深刻度を取得します。 |
logsource | 文字列 lo | 最終 | グエントリの[ソース]がパラメータと一致するかどうかをチェックします。 0 - 一致しない 1 - 一致する 通常は、Windowsイベントログのチェックに使用します。例: logsource("VMWare Server") |
max | 秒数または回数 浮動小数、整 | 期間内の最大値を返します。 | ラメータには期間の長さ(秒単位)を指定します。 Zabbix 1.8.2以降では、2番目の省略可能なパラメータtime_shiftがサポートされています。使用例については関数avgを参照してください。 |
min | 秒数または回数 浮動小数、整 | 期間内の最小値を返します。 | ラメータには期間の長さ(秒単位)を指定します。 Zabbix 1.8.2以降では、2番目の省略可能なパラメータtime_shiftがサポートされています。使用例については関数avgを参照してください。 |
nodata | 秒数 す | て 以下の値 | 返します。 1 - 期間内(秒単位)にデータを1つも受信しない場合。期間として30秒以上の値を指定する必要があります。 0 - それ以外 |
now | 無視 す | て エポック | 1970年1月1日00時00分00秒UTC)を起点とした経過秒数を返します。 |
prev | 無視 浮 | 小数、整数、文字列、テキスト、ログ 前回値を返します。パラメータは無視されま | 。 last(#2)と同じ |
regexp | 1番目 - 文字列 文字列、2番目 - 秒数または#回数 | グ、テキスト 最新値が正規表現と一致するかど省略可能な2番目 | かをチェックします。パラメータにはPosix形式の正規表現を指定します。 パラメータでは、分析する秒数または行数を指定します。この場合、複数の値が処理されます。 大文字と小文字は区別されます。 以下の値を返します。 1 - 見つかった 0 - それ以外 |
str | 1番目 - 文字列 文字列、2番目 - 秒数または#回数 | グ、テキスト 最新値で文字列を検索します。パ省略可能な2番目 | メータには検索する文字列を指定します。大文字と小文字は区別されます。 パラメータでは、分析する秒数または行数を指定します。この場合、複数の値が処理されます。 以下の値を返します。 1 - 見つかった 0 - それ以外 |
sum | 秒数または回数 浮動小数、整 | 期間内の値の合計値を返しま | 。パラメータには期間の長さ(秒単位)を指定します。 Zabbix 1.8.2以降では、2番目の省略可能なパラメータtime_shiftがサポートされています。使用例については関数avgを参照してください。 |
time | 無視 す | て 現在の時 | を返します。例: 123055 |
一部の関数は数値以外のパラメータには使用できません。
数値関数のほとんどは、引数として秒数を受け取ります。プリフィクス「#」を使用して、引数に別の意味を持たせることもできます。
引数 定 | |
---|---|
sum(600) | 600秒間の全ての値の合計値 |
sum(#5) | 直近5個の値の合計値 |
トリガーでは以下の定数がサポートされています。
定数 定 | |
---|---|
<number> | 正の浮動小数点。 例: 0, 1, 0.15, 123.55 |
<number><K | M | G> | K – 1024*N M – 1024*1024*N G – 1024*1024*1024*N 例: 2K, 4G, 0.5M |
基本的な条件式の記述方法は次の形式です: {<server>:<key>.<function>(<parameter>)}<operator><const> パラメータを無視する関数にもパラメータを設定する必要があります。例: last(0)
www.zabbix.comのプロセッサロードアベレージが高すぎる状態を検出する条件式
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5 ‘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(600)}>2 この条件式は、現在のプロセッサロードアベレージが5より大きいか、または直近10分間のプロセッサロードアベレージが2より大きい場合に障害になります。
/etc/passwdが変更されたことを検出する条件式
Use of function diff: {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0 この条件式は、/etc/passwdのチェックサムの前回値が最新値と異なる場合に障害になります。
同様の式を使用して、/etc/passwd、/etc/inetd.conf、/kernelなどの重要なファイルの変更を監視できます。
誰かがインターネットから大きいサイズのファイルをダウンロードしていることを検出する条件式
min関数を使用します: {www.zabbix.com:net.if.in[eth0,bytes].min(300)}>100K この条件式は、直近5分間にeth0で受信したバイト数が100KBを超えた場合に障害になります。
クラスタ化されたSMTPサーバのノードが2つとも停止したことを検出する条件式
2つの異なるホストを1つの条件式に使用します: {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.zabbix.com:agent.version.str(beta8)}=1 この条件式は、ZABBIXエージェントのバージョンがbeta8(おそらく1.0beta8)である場合に障害になります。
サーバとの疎通がなくなったことを検出する {zabbix.zabbix.com:status.last(0)}=2
::: noteclassic 「status」は、指定されたホストに少なくとも1つの監視パラメータが存在する場合にのみ計算される特殊パラメータです。詳細については、「status」の説明を参照してください。
直近3分間で一度もハートビートを受信しなかったことを検出する条件式
nodata()を使用します: {zabbix.zabbix.com:tick.nodata(180)}=1 「tick」のタイプには「Zabbixトラッパー」を選択します。このトリガーを使用するには、アイテム「tick」を定義する必要があります。ホストはzabbix_senderを使用して、このパラメータのデータを定期的に送信する必要があります。180秒間データを受信しないと、トリガーの値が障害になります。
夜間のCPU使用率を監視する条件式
time()関数を使用します: {zabbix:system.cpu.load[all,avg1].min(300)}>2&{zabbix:system.cpu.load[all,avg1].time(0)}>000000&{zabbix:system.cpu.load[all,avg1].time(0)}<060000 このトリガーが障害になるのは、夜間(00:00~06:00)だけです。
トリガーの依存関係を使用して、トリガー間の関係を定義できます。
トリガーの依存関係は、複数のリソースをソースとするイベントが発生した場合に送信されるメッセージの数を制限できる便利な手段です。
たとえば、ホストHostがルータRouter2の背後にあり、Router2がRouter1の背後にあるとします。Zabbix - Router1 - Router2 - Host もしRouter1が停止すると、当然HostとRouter2は応答なしになります。しかし、この場合にHost、Router1、Router2のそれぞれに関する通知を全て受信する必要はありません。トリガーの依存関係を使用するとこの問題を解決できます。
個の場合、次のようみトリガーの依存関係を設定します: トリガー「Host is down」はトリガー「Router2 is down」に依存し、トリガー「Router2 is down」はトリガー「Router1 is down」に依存します。 Zabbixはトリガー「Host is down」のステータスを変更する前に、該当するトリガーの依存関係が定義されているかどうかをチェックします。定義されている場合、依存するトリガーの少なくとも1つが障害なら、変更しようとしたトリガーのステータスは変更されず、アクションの実行や通知の送信も行われません。
Zabbixはこのチェックを再帰的に実行します。つまり、Router1またはRouter2のいずれかが応答なしの場合、Hostのトリガーは更新されません。
トリガーの深刻度は、トリガーの重要性を定義します。サポートされているトリガーの深刻度を以下に示します。
深刻度 定義 | 色 | |
---|---|---|
未分類 不明 | 深刻度です。 灰色 | |
情報 情 | 目的です。 明るい緑 | |
警告 注 | を促します。 明るい黄色 | |
軽度の障害 軽度の障 | が発生しています。 暗い赤 | |
重度の障害 何らかの | 大な障害が発生しています。 赤 | |
致命的な障害 致命的な障 | が発生しています。財務上の損失などが考えられます。 明るい赤 |
深刻度には以下の用途があります。
トリガーの状態ごとに異なるコンディションを設定する必要がある場合があります。たとえば、サーバ室の温度が20℃を超えたときに障害になり、その後は15℃を下回るまで障害を維持するトリガーを定義する場合を考えます。
この場合、以下のトリガーを定義します。
サーバ室の温度が高すぎる状態を検出する条件式
({TRIGGER.VALUE}=0&{server:temp.last(0)}>20)| ({TRIGGER.VALUE}=1&{server:temp.last(0)}>15) {TRIGGER.VALUE}の使用方法に注意してください。このマクロは現在のトリガー値を返します。