採用情報 お問い合わせ

BLOG

Zabbix のトリガー設定:毎時 0 分〜5 分をトリガー判定から除外する time 関数の設定方法

Zabbix のトリガー設定において、特定の曜日や時間帯を除外設定(メンテナンス時間の考慮など)することはよくあります。しかし、「毎時間の最初の 5 分間だけを除外したい」といった、より細かいサイクルでの除外設定が必要になるケースもあります。
今回は、標準の time() 関数を応用して、分単位(MMSS)の条件を作り出すテクニックと、運用のベストプラクティスについて解説します。

※ 本記事で使用する用語についてはこちらのページを参照してください。

Q. 時間(MMSS)だけを取得するトリガー関数はありますか?

A. 残念ながら、MMSS だけを直接返す専用関数はありません。

Zabbix のトリガー関数 time() は、HHMMSS という 6 桁の数値を返します。分(MM)や秒(SS)だけを抽出する専用の関数は用意されていませんが、数値計算(剰余算)を組み合わせることで実現が可能です。

方法:トリガー式で「剰余(mod)」を活用する

「毎時 0 分〜5 分 の間はトリガー判定を除外する」という要件は、以下のロジックで実装できます。

考え方

  1. 現在時刻の取得: time() で HHMMSS を取得。
  2. 時(HH)の削除: 10000 で割った余り(剰余)を求めると、下 4 桁(MMSS)が残ります。
  3. 分(MM)の抽出: さらに 100 で割ることで、秒数を小数点以下に追いやり、整数部で「分」を判定します。

設定するトリガー条件式

既存の条件式に、以下の and not 以降の行を追加します。
この設定では、00 分 00 秒 〜 04 分 59 秒 までの間、条件式が成立し(True)、not によってトリガー発動が抑制されます。05 分 00 秒 になると計算結果が 5 となり、条件から外れます。

min(/Zabbix server/system.cpu.load[all,avg1],5m)>2
and not
(mod(time(),10000)/100< 5 )

式の解説

式の要素 処理内容 具体例(12:04:50 の場合)
time() 現在時刻(HHMMSS) 120450
mod(..., 10000) 10000 で割った余りを取得(HH を除去) 0450(450)
/ 100 100 で割り算を行う 4.5
< 5 5 より小さいか判定 True(除外対象)

検証

実際に検証してみました。今回はトリガーの条件式ビルダーのテスト機能を利用します。
time() には値が設定できないため、一時的にトリガー条件式を変更した状態でテストを実行しています。

検証環境 :

Zabbix 7.0.22
AlmaLinux 8.10

パターン1: 10:04:59

5 分未満であるため、FALSE として判定されることを期待します。
time() 部分を 100450 に置き換えてテストします。後半部分が FALSE 判定となるため、全体として FALSE 判定となっています。期待どおりです。

 パターン1のテスト結果画面

パターン 2: 10:05:00

5 分未満ではないため、TRUE として判定されることを期待します。time() 部分を 100500 に置き換えてテストします。後半部分が FALSE 判定となるため、全体として FALSE 判定となっています。期待どおりです。

 パターン2のテスト結果画面

パターン 3: 00:00:00

5 分未満であるため、FALSE として判定されることを期待します。
time() 部分を 0 に置き換えてテストします。後半部分が FALSE 判定となるため、全体として FALSE 判定となっています。期待どおりです

 パターン3のテスト結果画面

パターン 4: 00:05:00

5 分未満ではないため、TRUE として判定されることを期待します。time() 部分を 500 に置き換えてテストします。後半部分が FALSE 判定となるため、全体として FALSE 判定となっています。期待どおりです。

 パターン4のテスト結果画面

まとめ

毎時特定の「分」だけを除外したい場合は、以下の数式パターンを定型として覚えておくと便利です。

mod(time(), 10000) < MMSS

例:毎時 0 分〜5 分 00 秒未満 (00:00-04:59) を指定する場合 mod(time(), 10000) < 500

※上記の mod(time(), 10000)/100 < 5 と論理的には同じですが、割り算を省略して「500(5 分 00 秒)」と比較する書き方もシンプルでおすすめです。

なお、トリガー式の中に複雑な時間条件を組み込むと、式が長く複雑になり、管理しづらくなるデメリットがあります。
また、「障害通知やアクションだけを止めたい」というご要望であれば、トリガー式を変更するのではなく、Zabbix の標準機能である「メンテナンス」設定の利用も検討してください。

参考情報・公式ドキュメント

※Zabbix は、ラトビア共和国およびその他の国における Zabbix SIA の登録商標です。

本記事に関連するリンク