This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

7 計算アイテム

7.1 概要

計算アイテムで他のアイテムに基づく計算を作成することができます。

計算アイテムは、仮想データソースを作成する方法です。アイテムの値は計算式に基づいて定期的に計算されます。すべての計算はZabbixサーバによって行われます-ZabbixエージェントまたはZabbixプロキシ上では、計算アイテムに関係する処理は一切実行されません。

他のどのアイテムに関しても、結果のデータはZabbix データベースに保存されます - これによって、ヒストリとトレンドの値の両方を保存して、グラフの高速な生成を可能にしています。計算アイテムは、トリガー条件式へ使用され、他のアイテムタイプと同様にマクロその他のエンティティによって参照されます。

計算アイテムを使用するには、アイテムタイプ計算を選択します。

7.2 設定可能なフィールド

キーは、ホストごとに一意なアイテムの識別子です。サポートされている記号を使用してキー名を作成できます。

フィールド(1.8.1と1.8.2では「条件式」という名前でした)に計算定義を入力します。式とキーには、仮想的には何の接続もありません。どのような場合でも、キーのパラメータは式の中では使用されません。

1つの式の正しい構文は次のとおりです:

func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)

各引数の意味は以下のとおりです。

引数 定
func トリガー条件式でサポートされている関数の1つ: last, min, max, avg, countなど
key 使用したいデータを持つ他のアイテムのキー。keyまたはhostname:keyで定義します。
注:キー内のスペースやカンマが原因で間違って構文解析してしまうのを避けるために、キー全体を二重引用符(”…”)で囲むことを強くお奨めします。
キー内に引用符で囲まれているパラメータもある場合は、それらの二重引用符はバックスラッシュ (\)を使用してエスケープする必要があります。 下記の例5を参照してください。
parameter(s) 計算に必要なパラメータ

計算アイテムの式から参照されているすべてのアイテムは、存在していなければならず、データを収集していなければなりません。また、参照アイテムのアイテムキーを変更する場合、古いキーを使用していた、すべての式を手動で更新しなければなりません。

式の中のユーザーマクロは、パラメータまたは定数の参照に使用された場合は、展開されます。関数、ホスト名、アイテムキー、演算子の参照に使用された場合は、ユーザーマクロは展開されません。

もっと複雑な式は、関数、演算子、括弧を組み合わせて使用できます。トリガー条件式では、サポートされているすべての関数と演算子を使用できます。構文はわずかに異なりますが、ロジックと演算子の優先順位はほぼ同じです。

関数でサポートされている文字:

a..zA..Z0..9_

ホスト名でサポートされている文字:

a..zA..Z0..9 ._-

キーでサポートされている文字:

a..zA..Z0..9.,_

トリガー条件式とは異なり、Zabbixは、新しい値を受信した時ではなく、アイテムの更新間隔に従って計算アイテムを処理します。

計算アイテムは、以下のケースでは取得不可になる場合があります:

  1. 参照アイテムが見つからない
  2. 関数を計算するためのデータがない
  3. ゼロ除算
  4. 使用している構文が正しくない

計算アイテムのサポートは、Zabbix 1.8.1で導入されました。

7.3 使用例

例 1

「/」の空きディスク容量のパーセント値を計算します。

last関数を使用します:

100*last("vfs.fs.size[/,free]",0)/last("vfs.fs.size[/,total]",0)

Zabbixは、空きディスク容量と合計ディスク容量の最新の値を取得して、指定の式に従いパーセント値を計算します。

例 2

Zabbixで処理される値の10分間の平均を計算します。

avg関数を使用します:

avg("Zabbix Server:zabbix[wcache,values]",600)

計算アイテムを長時間間隔の平均をいろいろな場所で使用すると、Zabbixサーバのパフォーマンスが影響を受ける場合があります。

例 3

eth0の合計帯域幅を計算します。

2つの関数を合計します:

last("net.if.in[eth0,bytes]",0)+last("net.if.out[eth0,bytes]",0)
例 4

受信トラフィックのパーセント値を計算します。

より複雑な式:

100*last("net.if.in[eth0,bytes]",0)/(last("net.if.in[eth0,bytes]",0)+last("net.if.out[eth0,bytes]",0))
例 5

計算アイテム内で正しく集められたアイテムを使用します。

引用符で囲まれたキー内で二重引用符がどのようにエスケープされるか、注意してください:

last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\",\"0\"]",0) / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\",\"0\"]",0) 

本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。