1 集計計算
概要
集計計算は、Zabbixサーバーによって複数のアイテムから情報を収集し、使用する集計関数に応じて集計を計算できる計算アイテムタイプです。
集計計算では、監視対象のホストでエージェントを実行する必要はありません。
構文
集計値を取得するには、サポートされている集計関数のいずれか(avg、max、min、sum など)を使用します。
次に、必要なアイテムを選択するために、foreach 関数を唯一のパラメータとして追加し、そのアイテムフィルターを指定します。
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
foreach 関数(例: avg_foreach、count_foreach など)は、選択された各アイテムに対して1つの集計値を返します。
アイテムは、アイテム履歴からアイテムフィルター(/host/key?[group="host group"])を使用して選択されます。
詳細は、foreach 関数を参照してください。
要求された期間に対してデータを持たないアイテムがある場合、それらは計算で無視されます。 データを持つアイテムが1つもない場合、関数はエラーを返します。
または、集計のパラメータとして複数のアイテムを列挙することもできます。
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
ここでの function は、履歴/トレンド関数である必要があることに注意してください。
集計の結果が浮動小数点値になる場合、集計対象アイテムの情報の型が Numeric (unsigned) であれば、整数に切り詰められます。
ユーザーマクロおよびローレベルディスカバリマクロは、以下でサポートされています。
- アイテムキーのパラメータ
- 関数パラメータ
- フィルター条件(ホストグループ名およびタグ名)
- 式の定数
以下の場合、集計計算は未サポートになることがあります。
- 参照されているアイテムが1つも見つからない場合(これは、アイテムキーが正しくない、該当するアイテムが存在しない、または含まれるすべてのグループが正しくない場合に発生する可能性があります)
- 関数を計算するためのデータがない場合
使用例
集計のためのキーの例です。
例 1
ホストグループ「MySQL Servers」のディスク総容量。
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
例 2
ホスト上で net.if.in[*] に一致するすべてのアイテムの最新値の合計。
sum(last_foreach(/host/net.if.in[*]))
例 3
ホストグループ「MySQL Servers」の平均プロセッサー負荷。
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
例 4
ホストグループ「MySQL Servers」の1秒あたりのクエリ数の5分間平均。
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
例 5
特定のタグを持つ複数のホストグループ内のすべてのホストにおける、CPU負荷の平均値。
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
例 6
ホストグループ全体の最新のアイテム値の合計に対して使用される計算。
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
例 7
ホストグループ 'Zabbix servers' におけるサポートされていないアイテムの合計数。
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
例 8
すべてのホストにわたる DNS チェックの最新の数値結果の合計。
表示されているアイテム形式は、1つの可能なキーの例として net.dns[192.0.2.1,example.com,A] です。
sum(last_foreach(/*/net.dns[*,*,*]))
ワイルドカードは、キー内のパラメータ数と一致している必要があります(ここでは net.dns に 3 つのパラメータがあります: ip, name, type)。
正しい/誤った構文の例
式(関数呼び出しを含む)は、履歴、トレンド、または foreach 関数 のパラメータとして使用できません。 ただし、これらの関数自体は、他の(履歴系ではない)関数パラメータで使用できます。
| 式 | 例 |
|---|---|
| 有効 | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100)max(avg(avg_foreach(/*/system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m))) |
| 無効 | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
次のような式では、次の点に注意してください。
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
式の両側で、常に同じ値の集合になるとは限りません。 式の一方が評価されている間に、要求された期間に対する新しい値が到着する可能性があり、その結果、式のもう一方では異なる値の集合を持つことになります。