This is a translation of the original English documentation page. Help us make it better.

7 計算

概要

計算項目を使用すると、他の項目の値を基に計算を行うことができます。

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

  • 個々の項目の単一の値
  • 集計のために複数の項目を選択するための複雑なフィルター (aggregate calculationsを 参照してください。

このように、計算 item は仮想データソースを作成するための手段です。すべての計算はZabbix server のみによって行われます。
値は使用された算術式に基づき定期的に計算されます。

計算結果のデータは他のアイテムと同様にZabbixデータベースに保存され、ヒストリー値とトレンド値の両方が保存され、
グラフを作成することも可能です。

計算結果がfloat値の場合、計算された item の情報タイプが数値(符号なし)であれば、整数に切り詰められます。

計算 item は、トリガー式expressions と構文を共有しています。
計算 item は、文字列との比較も可能です。計算項目は、他の項目型と同様に、マクロや他のエンティティから参照することができます。

計算 item を使用するには、 item タイプ Calculated を選択します。

設定可能なフィールド

キーは、(ホストごとに)一意なアイテム識別子です。サポートされているシンボルを使用して、任意のキー名を作成することができます。

計算の定義は、Formulaの欄に入力してください。数式とキーの間には事実上何の関係もありません。
キーのパラメータは、数式では一切使用されません。

簡単な式の構文は以下の通りです。

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

ここで

function One of the supported functions: last, min, max, avg, count, etc
host Host of the item that is used for calculation.
The current host can be omitted (i.e. as in function(//key,parameter,...)).
key Key of the item that is used for calculation.
parameter(s) Parameters of the function, if required.

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

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

Zabbixはトリガー式とは異なり、新しい値を受け取った時ではなく、item の更新間隔に従って計算された item を処理します。

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

計算された item は、いくつかのケースでサポートされなくなることがあります:

  • referenced item(s)
    • is not found
    • is disabled
    • belongs to a disabled host
    • is not supported (except with nodata() function and operators with unknown values)
  • no data to calculate a function
  • division by zero
  • incorrect syntax used

使用例

例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を参照してください。