1 集計計算
概要
集計計算は、Zabbix サーバーによって複数の項目から情報を収集し、使用する集計関数に応じて集計を計算できる 計算項目タイプです。
集計計算項目では、符号なしの整数値と浮動小数点値 (情報の種類) のみがサポートされています。
集計計算では、監視対象のホストでエージェントを実行する必要はありません。
文法
集計は、どちらかの作業で取得することができます。:
- history of items:
<!-- -->
aggregate_function(function(/host/item,parameter),function(/host2/item2,parameter),...)
- a foreach function を唯一のパラメータとして:
<!-- -->
aggregate_function(foreach_function(/*/key?[group="host group"],timeperiod))
where:
- aggregate_function` は、サポートされている aggregate functions: avg, max, min, sum, etc のいずれかである。
- foreach_function` は、サポートされている foreach 関数 (avg_foreach, count_foreach など) のうちの 1 つです。
Foreach関数は、複数の項目の履歴を扱うためにitem filterを使用し、各項目につき1つの値を配列で返します。
集計結果がfloat値の場合、集計された情報の item タイプがNumeric(unsigned)であれば、整数に切り捨てられます。
以下の場合、集計計算がサポートされなくなる可能性があります:
- 参照した項目が見つからない(item キーが正しくない、item が存在しない、含まれるグループがすべて正しくない場合に 発生する可能性があります)
- 関数を計算するためのデータがない
使用例
集計のためのキーの例です。
例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
The total number of unsupported items in host group 'Zabbix servers'. ホストグループ 'Zabbix servers' のサポート対象外 item の総数です。
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))
式の両方の部分が常に同じ値のセットになるとは限りません。 式の一部が評価されている間に、要求された期間の新しい値が到着し、式の他の部分が異なる値のセットを持つことがあります。