You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

7 計算

概要

計算アイテムを使用すると、既存のアイテムの値に基づいて計算を作成できます。たとえば、あるアイテム値の1時間ごとの平均を計算したり、アイテムグループの合計値を計算したりすることができます。これが計算アイテムの目的です。

計算では、以下の両方を使用できます。

  • 個々のアイテムの単一値
  • 集計のために複数のアイテムを選択するための複雑なフィルター(詳細は集計計算を参照)

計算アイテムは、仮想データソースを作成する方法です。すべての計算はZabbixサーバーのみで実行されます。値は、使用される算術式に基づいて定期的に計算されます。

結果のデータは、他のアイテムと同様にZabbixデータベースに保存されます。履歴値とトレンド値の両方が保存され、グラフを生成できます。

計算結果が浮動小数点値の場合、計算アイテムの情報の型が数値(整数)の場合は整数に切り捨てられます。

また、キャッシュに最近のデータがなく、関数で問い合わせ期間が定義されていない場合、Zabbixはデフォルトで過去1週間までさかのぼってデータベースから履歴値を取得します。

計算アイテムは、トリガーと構文を共有します。計算アイテムでは文字列との比較も許可されています。計算アイテムは、他のアイテムタイプと同様にマクロや他のエンティティから参照できます。

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

設定可能なフィールド

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

計算式はフィールドに入力します。式とキーの間に関連性はありません。キーのパラメータは式内で一切使用されません。

単純な式の構文は次のとおりです:

function(/host/key,<parameter1>,<parameter2>,...)

ここで:

function サポートされている関数のいずれか: last, min, max, avg, countなど
host 計算に使用されるアイテムのホスト。
現在のホストは省略可能です(例: function(//key,parameter,...) のように)。
key 計算に使用されるアイテムのキー。
parameter(s) 関数のパラメータ(必要な場合)。
時間のサフィックスおよびメモリサイズのサフィックスがサポートされています。

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

より複雑な式では、関数、演算子、括弧を組み合わせて使用できます。トリガー式でサポートされているすべての関数と演算子を使用できます。論理や演算子の優先順位もまったく同じです。

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

計算アイテムの式で履歴関数によって参照されるすべてのアイテムは、存在し、データを収集している必要があります。また、参照されるアイテムのアイテムキーを変更した場合は、そのキーを使用しているすべての式を手動で更新する必要があります。

計算アイテムがサポート対象外になる場合はいくつかあります:

  • 参照アイテムが
    • 見つからない
    • 無効になっている
    • 無効なホストに属している
    • サポート対象外である(ただし、nodata()関数および 未知の値を持つ演算子を除く)
  • 関数を計算するためのデータがない
  • ゼロによる除算
  • 不正な構文の使用

使用例

例1

'/' のディスク空き容量のパーセンテージを計算します。

Use of function last:

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

Zabbixはフリーディスクスペースとトータルディスクスペースの最新値を取得し、指定された計算式に従ってパーセンテージを計算します。

例2

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

Use of function avg:

avg(/Zabbix Server/zabbix[wcache,values],10m)

長い時間の計算 item を多用すると、Zabbix server のパフォーマンスに影響を与える可能性があることに注意してください。

例3

eth0の総帯域幅を計算する。

2つの関数の合計:

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

受信トラフィックのパーセンテージを計算する。

より複雑な表現:

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

Examples of aggregate calculationsを参照してください。