14 計算アイテム

概要

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

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

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

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

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

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

また、キャッシュに最近のデータがなく、関数内でクエリ期間が定義されていない場合、Zabbix は既定で最大1週間前までさかのぼってデータベースに履歴値を問い合わせます。

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

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

設定可能なフィールド

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

計算定義は Formula フィールドに入力します。formula と key の間に関連はありません。key パラメータは formula では一切使用されません。

単純な formula の構文は次のとおりです。

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

ここで:

function サポートされている関数 のいずれか: last, min, max, avg, count など
host 計算に使用されるアイテムのホスト。
現在のホストは省略できます(つまり function(//key,parameter,...) のように記述できます)。
key 計算に使用されるアイテムの key。
バイナリ data type の値を返すアイテムはサポートされていません。
parameter(s) 必要に応じた関数のパラメータ。
時間サフィックスメモリサイズサフィックス がサポートされています。

formula 内の User macros は、関数パラメータ、アイテムフィルターパラメータ、または定数を参照するために使用されている場合に展開されます。関数、ホスト名、アイテム key、アイテム key パラメータ、または演算子を参照している場合、User macros は展開されません。

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

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

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

計算済みアイテムは、次のいずれかの場合にサポート対象外になることがあります。

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

使用例

例 1

'/' の空きディスク容量の割合を計算します。

関数 last の使用:

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

Zabbix は、空きディスク容量と総ディスク容量の最新値を取得し、 指定された式に従って割合を計算します。

例 2

Zabbix によって処理された値の数の 10 分平均を計算します。

関数 avg の使用:

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

長い期間を指定した計算アイテムを多用すると、Zabbix サーバーのパフォーマンスに影響を与える可能性があることに注意してください。

例 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]))

関連項目: 集計計算の例