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]))
関連項目: 集計計算の例