1 集計計算

概要

集計計算は、Zabbixサーバーによって複数のアイテムから情報を収集し、使用する集計関数に応じて集計を計算できる計算アイテムタイプです。

集計計算では、監視対象のホストでエージェントを実行する必要はありません。

構文

集計を取得するには、サポートされている集計関数のいずれか(avgmaxminsumなど)を使用します。 次に、foreach関数を唯一のパラメータとして追加し、必要なアイテムを選択するためのアイテムフィルターを指定します:

aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))

foreach関数(例:avg_foreachcount_foreachなど)は、選択された各アイテムに対して1つの集計値を返します。 アイテムは、アイテム履歴からアイテムフィルター(/host/key?[group="host group"])を使用して選択されます。 詳細については、foreach関数を参照してください。

要求された期間に一部のアイテムにデータがない場合、それらは計算から除外されます。 すべてのアイテムにデータがない場合、関数はエラーを返します。

また、集計のパラメータとして複数のアイテムをリストすることもできます:

aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)

ここでのfunctionは、ヒストリ/トレンド関数である必要があることに注意してください。

集計結果が浮動小数点値の場合、集計されたアイテムの情報の型が数値(整数)の場合は整数に切り捨てられます。

ユーザーマクロおよび低レベルディスカバリーマクロは、以下でサポートされています:

  • アイテムキーのパラメータ
  • 関数のパラメータ
  • フィルター条件(ホストグループ名およびタグ名)
  • 式定数

集計計算がサポートされなくなる場合があります:

  • 参照されているアイテムが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チェックの最新の数値結果の合計。 表示されているアイテム形式は、net.dns[192.0.2.0,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))

式の両方の部分が常に同じ値のセットを持つことは保証できません。 式の一部が評価されている間に、要求された期間の新しい値が到着し、式のもう一方の部分が異なる値のセットを持つことがあります。