[comment]: # translation:outdated

[comment]: # ({b8c65ad1-b8c65ad1})
# 7 計算

[comment]: # ({/b8c65ad1-b8c65ad1})

[comment]: # ({11badbc1-43ebe58c})
#### 概要

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

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

- 個々の項目の単一の値
- 集計のために複数の項目を選択するための複雑なフィルター ([aggregate calculations](/manual/config/items/itemtypes/calculated/aggregate)を 
  参照してください。

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

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

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

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

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

[comment]: # ({/11badbc1-43ebe58c})

[comment]: # ({71c70730-ddc35784})
#### 設定可能なフィールド

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

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

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

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

ここで

|   |   |
|---|---|
|*function*|One of the [supported functions](/manual/appendix/functions): last, min, max, avg, count, etc|
|*host*|Host of the item that is used for calculation.<br>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.|

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

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

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

計算 item 式の中で履歴関数によって参照される item は、すべて存在し、データを収集している必要があります。<br>
また、参照される 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](/manual/config/triggers/expression#operators) with
        unknown values)
-   no data to calculate a function
-   division by zero
-   incorrect syntax used

[comment]: # ({/71c70730-ddc35784})

[comment]: # ({82c22f4f-82c22f4f})
#### 使用例

[comment]: # ({/82c22f4f-82c22f4f})

[comment]: # ({426ab71a-426ab71a})
##### 例1

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

Use of function **last**:

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

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

[comment]: # ({/426ab71a-426ab71a})

[comment]: # ({77bcdfd9-77bcdfd9})
##### 例2

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

Use of function **avg**:

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

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

[comment]: # ({/77bcdfd9-77bcdfd9})

[comment]: # ({5d068733-5d068733})
##### 例3

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

2つの関数の合計:

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

[comment]: # ({/5d068733-5d068733})

[comment]: # ({f8b53af1-f8b53af1})
##### 例4

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

より複雑な表現:

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

[Examples of aggregate calculations](/manual/config/items/itemtypes/calculated/aggregate#usage_examples)を参照してください。

[comment]: # ({/f8b53af1-f8b53af1})
