BLOG
2022 年 05 月 16 日
Zabbix 6.0 の新機能:計算アイテム・トリガー条件式・マクロの書式が新しくなりました
Zabbix 6.0 までに追加された新しい条件式について紹介します。
Zabbix 5.0 から Zabbix 6.0 までのアップデートにおいて計算アイテムやトリガー条件式、マクロの書式が新しい書式に更新されました。この書式の変更により、統一されたフォーマットで式を記述できるようになります。特に、これまでの Zabbix では扱いが難しかったデータ集計に関連するアイテムが、新しい書式では通常の計算アイテムと同様の書式で実現できるようになりました。また、関数を入れ子できるようになったことで、これまでの書式では表現できなかった式を記述できるようになります。
今回の記事ではこれらの新しい書式について紹介します。
計算アイテム・トリガー条件式・マクロの新しい書式
新しい書式の導入
Zabbix 5.4 から計算アイテムとトリガー条件式が新しい書式に変更されました。また、Zabbix 6.0 からトリガー式を用いたマクロ(シンプルマクロ)が新しい書式(条件式マクロ)に置き換えられました。
それぞれの項目について、新しい書式が導入された以降のバージョンでは旧書式は廃止されており使用できません。
Zabbix のバージョンをアップグレードするさいに既存の旧書式は新書式に変換されます。
旧書式と新書式を比較すると、旧書式は波括弧({})の中にホスト名やアイテムキー、関数を書いていましたが、新書式では関数の丸括弧の中にホスト名とアイテムキーを書いたあと、関数の引数が続くようになります。
< ホスト名 > の部分を省略すると、そのアイテムが属しているホスト名を指定したものとして扱います。
旧 | {< ホスト名 >:< アイテムキー >.< 関数 >(< 関数の引数 >...)} |
---|---|
新 | < 関数 >(/< ホスト名 >/< アイテムキー >,< 関数の引数 >...) |
計算アイテムの例
シンプルな計算アイテム
/(ファイルシステム)のディスク使用率を表す計算アイテムの例は以下のようになります。
旧 | 100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]") |
---|---|
新 | 100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total]) |
last(//vfs.fs.size[/,free]) や last(//vfs.fs.size[/,total]) の部分がそれぞれ新書式の計算式です。
アグリゲートアイテムから集計関数へ
データ集計で使われていた grpsum や grpavg などのアグリゲートアイテムは廃止され、替わりに sum_foreach や avg_foreach などの foreach 関数が追加されました。集計したデータを取得するアイテムは集計関数を使って計算アイテムとして設定するようになりました。
MySQL Servers グループに所属するすべてのホストの /(ファイルシステム)のファイルシステムの容量を求める例は以下のようになります。
旧 | grpsum["MySQL Servers","vfs.fs.size[/,total]",last] |
---|---|
新 | sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) |
もう一段階進んで、MySQL Servers グループに所属するすべてのホストに登録しているすべてのファイルシステムの総容量を求める例は以下のようになります。
旧 | 表現不可 |
---|---|
新 | sum(last_foreach(/*/vfs.fs.size[*,total]?[group="MySQL Servers"])) |
foreach 関数に与えるホスト名やアイテムのパラメータには、任意の値に一致することを表す * を指定できます。
ホスト名に * を指定するとすべてのホストとして扱われます。アイテムのパラメータに * を指定すると一致するすべてのアイテムとして扱われます。アイテムの直後に ? に続けて条件を記載することでグループもしくはタグを使ってフィルタすることも可能です。
これらのフィルタと集計関数を組み合わせることによって旧書式では不可能だった集計の計算も可能となりました。
Servers A・Servers B・Servers C すべてのグループに所属し、タグが Service: か Importance:High(重要度 : 高)に当てはまる CPU 負荷の最新値の平均を求める例は以下のようになります。
旧 | 表現不可 |
---|---|
新 | avg(last_foreach(/*/system.cpu.load?[group="Servers A" and group="Servers B" and group="Servers C" and (tag="Service:" or tag="Importance:High")])) |
集計関数の詳細については こちら を参照してください。
foreach 関数の詳細については こちら を参照してください。
関数の入れ子
ある関数の戻り値を別の関数のパラメータとして使用できるようになります。
host の key アイテムの直近 1 時間の最小値と host2 の key2 アイテムの最新の 20 個の最小値を 10 倍した値のうち最小の値を求める例は以下のようになります。ここで外側の min は 計算関数 、内側の min は 集計関数 として扱われます。
旧 | 表現不可 |
---|---|
新 | min(min(/host/key,1h),min(/host2/key2,#20)*10) |
トリガー条件式の例
トリガー条件式の書式が計算アイテムと同様の書式に統一されました。
Zabbix server ホストのメモリ空き領域が 20% を下回っているかを判断するトリガー条件式の例は以下のようになります。
旧 | {Zabbix server:vm.memory.size[pavailable].last()}<20 |
---|---|
新 | last(/Zabbix server/vm.memory.size[pavailable])<20 |
条件式マクロ
マクロの例は以下のようになります。新しい書式の式を {? と } で囲んで使用します。
旧 | {host:key.avg(1h)} |
---|---|
新 | {?avg(/host/key,1h)} |
新しい書式のマクロは古い書式のマクロと同じく以下に使用できます。
- 障害通知・コマンド
- 障害更新通知・コマンド
- マップ要素ラベル
- マップリンクラベル
- マップシェイプラベル
- グラフ名
まとめ
- Zabbix 5.4 から計算アイテムとトリガー条件式の書式が新しくなりました。
- Zabbix 6.0 からシンプルマクロが条件式マクロに置き換えられました。
- MIRACLE ZBX は LTS 版 Zabbix をベースに開発されているため、MIRACLE ZBX 6.0 にてそれぞれの機能が実装されています。