1 トリガーの例

このページはトリガーの例のコレクションです。

例はユースケースごとに分類されています:

利用できないホストの検出
max(/host/zabbix[host,agent,available],5m)=0

このトリガーは、ホスト上のZabbixエージェントが5分間利用できない場合に発生します。
関数: max
データアイテム: zabbix[host,agent,available]

代替案:

nodata(/host/agent.ping,5m)=1

このトリガーは、Zabbixエージェントから5分間データが受信されていない場合に発生します。
関数: nodata
データアイテム: agent.ping

利用できないプロキシの検出
fuzzytime(/host/zabbix[proxy,{$PROXY_NAME},lastaccess],1m)=0

このトリガーは、ZabbixプロキシのデータがZabbixサーバーの時刻より1分遅れている場合に発生します。
関数: fuzzytime
データアイテム: zabbix[proxy,{$PROXY_NAME},lastaccess]

利用できないSMTPクラスタの検出
last(/smtp1.example.com/net.tcp.service[smtp])=0 and last(/smtp2.example.com/net.tcp.service[smtp])=0

両方のSMTPサーバーがダウンしている場合、このトリガーが発生します。
関数: last
データアイテム: net.tcp.service

到達不能なホストの検出
count(/host/icmpping,30m,,"0")>5

このトリガーは、過去30分間に5回以上pingでホストに到達できなかった場合に発生します。
関数: count
データアイテム: icmpping

予期しない再起動の検出
change(/host/system.uptime)<0

システムの稼働時間の値に負の変化があった場合(再起動を示す)にこのトリガーが発生します。
関数: change
データアイテム: system.uptime

重要なファイルの変更を検出する
last(/host/vfs.file.cksum[/etc/passwd],#1)<>last(/host/vfs.file.cksum[/etc/passwd],#2)

このトリガーは、/etc/passwdが変更された場合に発生します。直前の/etc/passwdのチェックサムと最新のチェックサムが異なる場合に式が真になります。/etc/passwd/etc/inetd.conf/kernelなどの重要なファイルの変更を監視するために、同様の式が役立ちます。
関数: last
データアイテム: vfs.file.cksum

DNSクエリの変更を検出する
last(/Zabbix server/net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME}           {$DNS_RESOURCE_RECORD_TYPE}       0 mail.{$WEBSITE_NAME}"

2番目のオペランドの周りに引用符があることに注意してください。

このトリガーは、クエリ結果が通常返されるものと等しくない場合に発生します。

example.com           MX       0 mail.example.com

関数: last
データアイテム: net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1]、マクロは以下のように定義されています。

{$WEBSITE_NAME} = example.com
{$DNS_RESOURCE_RECORD_TYPE} = MX
異なるホストで一致しないソフトウェアを検出する
last(/host/vfs.file.contents[/etc/os-release])<>last(/host2/vfs.file.contents[/etc/os-release])

このトリガーは、異なるホストでUbuntuのバージョンが異なる場合に発生します。ここでのオペランドは文字列を返す関数であることに注意してください。
関数: last
データアイテム: vfs.file.contents

非同期クロックの検出
fuzzytime(/host/system.localtime,10s)=0

クライアントのローカル時刻とZabbixサーバーの時刻が10秒以上異なる場合、トリガーが発生します。
関数: fuzzytime
データアイテム: system.localtime

system.localtimeは、Zabbixエージェントでパッシブチェックとして設定する必要があります。Zabbix agent 2ではアクティブチェックとして設定することもできます。

古いエージェントの検出
find(/host/agent.version,,"like","beta")=1

このトリガーは、Zabbixエージェントがベータバージョンの場合に発生します。Zabbixエージェントをアップグレードする必要があります。
関数: find
データアイテム: agent.version

flappingインターフェースの検出
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 

このトリガーは、eth0の運用状態(up/down/unknown)が1時間に5回以上変化した場合に発生します。
関数: changecount
データアイテム: vfs.file.contents

高い受信トラフィックを検出する
min(/host/net.if.in[eth0,bytes],5m)>100K

このトリガーは、過去5分間にeth0で受信したバイト数が常に100キロバイトを超えていた場合に発生します。誰かが大きなファイルをダウンロードしている可能性があります。
関数: min
データアイテム: net.if.in[eth0,bytes]

ディスク容量不足の検知
max(/host/vfs.fs.size[/,free],5m)<10G

空きディスク容量が5分間連続して10GB未満の場合にトリガーが発生します。

リカバリエクスプレッションも定義できます:

min(/host/vfs.fs.size[/,free],10m)>40G

空きディスク容量が10分間連続して40GBを超えた場合にのみ、問題が解決されます。
関数: min
データアイテム: vfs.fs.size

ディスク容量不足の検出(動的しきい値)
last(/template/hrStorageFree[{#SNMPVALUE}])<last(/template/hrStorageSize[{#SNMPVALUE}])*0.1

空き容量(割り当て単位)が10%未満になるとトリガーが発生します。さまざまなサイズの検出されたストレージに適用できる適応トリガーしきい値を取得するために、別のアイテムの値が使用されていることに注意してください。 関数: last

高いCPU負荷の検出
last(/host/system.cpu.load[all,avg1])>5

平均プロセッサ負荷が1分間5を超えている場合にトリガーが発生します。

バリエーション:

min(/host/system.cpu.load[all,avg1],5m)>2 and time()<060000
min(/host/system.cpu.load[all,avg1],5m)>2 and not (dayofweek()=7 and time()>230000) and not (dayofweek()=1 and time()<010000)

このようなトリガーは5分間のデータを分析し、CPU負荷が2未満にならない場合にのみトリガーします。さらに、これらのトリガーは以下の場合に発生します:

  • 夜間のみ (00:00-06:00)
  • 週の切り替え時の2時間 (日曜日23:00~月曜日01:00) を除く任意の時間
(last(/host/system.cpu.load[all,avg1])>5) + (last(/host2/system.cpu.load[all,avg1])>5) + (last(/host3/system.cpu.load[all,avg1])>5)>=2

このトリガーは、3つのホストのうち少なくとも2つでプロセッサ負荷が高すぎる場合に発生します。
関数: last, min, dayofweek, time
データアイテム: system.cpu.load

CPU負荷の比較
avg(/Zabbix server/system.cpu.load,1h)/avg(/Zabbix server/system.cpu.load,1h:now-1d)>2

このトリガーは、今日の平均負荷が昨日の同じ時間帯の平均負荷(now-1dの時間シフトを使用)を2倍以上上回った場合に発生します。
関数: avg
データアイテム: system.cpu.load

長期的なCPU負荷の比較
trendavg(/host/system.cpu.load,1M:now/M)>1.1*trendavg(/host/system.cpu.load,1M:now/M-1M)

このトリガーは、ホストのCPU負荷が先月より10%以上増加した場合に発生します
関数: trendavg
データアイテム: system.cpu.load

また、トリガー設定のイベント名フィールドを使用して、意味のあるアラートメッセージを作成することもできます。例えば、以下のようなメッセージを受け取るには

"Exchangeサーバーの負荷が7月に24%増加しました (0.69)、6月 (0.56) と比較して"

イベント名は次のように定義する必要があります:

{HOST.HOST}サーバーの負荷が{{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}%増加しました。{{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)})、{{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)}) と比較して

この種の問題には、トリガー設定で手動クローズを許可することも有用です。

特殊文字を含む文字列の検出
last(/host/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}

/tmp/helloの内容が{$HELLO_MACRO}で定義された文字列と等しい場合、トリガーが発生します。

{$HELLO_MACRO} = \" //hello ?\"

または、直接文字列と比較することもできます。

last(/Zabbix server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\""

特殊文字(\\")が直接比較される場合、どのようにエスケープされているかに注意してください。

関数: last
データアイテム: vfs.file.contents

他の人にも役立つかもしれないトリガー式の例がありますか? 例の提案フォームを使用して、Zabbix開発者に送信してください。