1 集計計算
概要
集計計算は、Zabbixサーバーによって複数のアイテムから情報を収集し、使用する集計関数に応じて集計を計算できる計算アイテムタイプです。
集計計算アイテムでは、符号なしの整数値と浮動小数点値(情報の種類)のみがサポートされています。
集計計算では、監視対象のホストでエージェントを実行する必要はありません。
文法
集計を取得するには、次の操作を行います。
- 集計するアイテムをいくつかリストします:
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
ここでfunctionはヒストリ/トレンド関数でなければならないことに注意してください。
- foreach関数を唯一のパラメーターとして使用し、そのアイテムフィルターを使用して必要なアイテムを選択します:
aggregate_function(foreach_function(/host/key?[group="host group"],timeperiod))
集計関数は、サポートされている集計関数の1つです: avg、max、min、sumなど。
foreach関数(例: avg_foreach、count_foreachなど)は、選択されたアイテムごとに1つの集計値を返します。アイテムは、アイテムフィルター(/host/key?[group="host group"])を使用してアイテムヒストリから選択されます。
一部のアイテムに要求された期間のデータがない場合、計算では無視されます。どのアイテムにもデータがない場合、関数はエラーを返します。
詳細については、foreach関数を参照してください。
集計の結果が浮動小数点値になった場合、集計されたアイテムの情報の種類が数値 (符号なし)であれば、整数に切り詰められます。
ユーザーマクロとローレベルディスカバリマクロは、次の場合にサポートされます:
- アイテムキーパラメーター
- 関数パラメーター
- フィルター条件(ホストグループ名とタグ名)
- 式定数
集計計算は、次の場合にサポートされなくなる可能性があります:
- 参照されたアイテムが見つからない (アイテムキーが正しくない、アイテムが存在しない、含まれているすべてのグループが正しくない、といった場合に発生する可能性があります)
- 関数を計算するためのデータがない
使用例
集計のためのキーの例です。
例1
ホストグループ 'MySQL Servers' の総ディスク容量
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
例2
そのホストでnet.if.in[*]に一致するすべての item の最新値の合計
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
ホストグループ全体の最新の item 値合計で計算します
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"]))
正しい/間違った構文の例
式 (関数呼び出しを含む) は、ヒストリー、トレンド、または 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))) |
| I無効 | 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))
式の両方の部分が常に同じ値のセットになるとは限りません。 式の一部が評価されている間に、要求された期間の新しい値が到着し、式の他の部分が異なる値のセットを持つことがあります。