1 集計関数

特に明記されていない限り、ここに一覧されているすべての関数は次でサポートされています。

集計関数は、次のいずれかで使用できます。

  • アイテムの履歴。たとえば、min(/host/key,1h)
  • foreach 関数を 唯一のパラメータとして使用。たとえば、min(last_foreach(/*/key))(計算アイテムでのみ使用可能で、トリガーでは直接使用できません)

関数は追加情報なしで一覧されています。関数をクリックすると、詳細を確認できます。

Function Description
avg 定義された評価期間内におけるアイテムの平均値。
bucket_percentile ヒストグラムのバケットからパーセンタイルを計算します。
count foreach 関数によって返される配列内の値の数。
histogram_quantile ヒストグラムのバケットから φ 分位数を計算します。
item_count フィルター条件に一致する、設定内に存在するアイテムの数。
kurtosis 定義された評価期間内に収集された値の分布の「裾の厚さ」。
mad 定義された評価期間内に収集された値の中央値絶対偏差。
max 定義された評価期間内におけるアイテムの最大値。
min 定義された評価期間内におけるアイテムの最小値。
skewness 定義された評価期間内に収集された値の分布の非対称性。
stddevpop 定義された評価期間内に収集された値の母標準偏差。
stddevsamp 定義された評価期間内に収集された値の標本標準偏差。
sum 定義された評価期間内に収集された値の合計。
sumofsquares 定義された評価期間内に収集された値の二乗和。
varpop 定義された評価期間内に収集された値の母分散。
varsamp 定義された評価期間内に収集された値の標本分散。

共通パラメータ

  • /host/key は、ホストのアイテム履歴を参照する関数に共通する必須の第1パラメータです
  • (sec|#num)<:time shift> は、ホストのアイテム履歴を参照する関数に共通する第2パラメータで、以下を意味します。
    • sec - 秒単位の最大評価期間 (時間のsuffixesを使用できます)、または
    • #num - 直近に収集された値における最大評価範囲 (ハッシュ記号が前に付く場合)
    • time shift (任意)- 評価時点を過去に移動できます。time shift の指定方法の詳細は、こちらを参照してください。

関数の詳細

関数のパラメータに関する一般的な注意事項:

  • 関数のパラメータはカンマで区切ります。
  • オプションの関数パラメータ(またはパラメータ部分)は、< > で示されます。
  • 関数固有のパラメータは、各関数で説明されています。
  • /host/key および (sec|#num)<:timeshift> パラメータは引用符で囲んではいけません。
avg(/host/key,(sec|#num)<:time shift>)

定義された評価期間内のアイテムの平均値。
サポートされる値の型: Float, Integer
サポートされる foreach functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

パラメーターについては、共通パラメーターを参照してください。

time shift は、現在の平均値と、ある時点前の平均値を比較する必要がある場合に便利です。

例:

avg(/host/key,1h) #現在までの直近1時間の平均値
avg(/host/key,1h:now-1d) #現在から25時間前から24時間前までの1時間の平均値
avg(/host/key,#5) #最新5件の値の平均値
avg(/host/key,#5:now-1d) #直近24時間に受信した値を除く最新5件の値の平均値
avg(/host/proc.num,5m)>300 #直近5分間のプロセス数の平均が300を超えた場合にトリガー
bucket_percentile(item filter,time period,percentage)

ヒストグラムのバケットからパーセンタイルを計算します。

パラメーター:

  • item filter - item filter を参照してください。
  • time period - time period を参照してください。
  • percentage - パーセンテージ (0-100)。

コメント:

  • 計算アイテムでのみサポートされます。
  • この関数は histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1)) のエイリアスです。

例:

bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #5分間の95パーセンタイル応答時間を計算
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #99パーセンタイルのAPIレイテンシーを計算
count(func_foreach(item filter,<time period>),<operator>,<pattern>)

foreach 関数によって返された配列内の値の数を数えます。
サポートされる foreach 関数: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

パラメータ:

  • func_foreach - 返された値の数を数える対象となる foreach 関数です。詳細は foreach 関数 を参照してください。count_foreach と bucket_rate_foreach は 追加パラメータ をサポートする点に注意してください。
  • item filter - item filter を参照してください。
  • time period - time period を参照してください。
  • operator(二重引用符で囲む必要があります)。サポートされる operators:
    eq - 等しい
    ne - 等しくない
    gt - より大きい
    ge - 以上
    lt - より小さい
    le - 以下
    like - パターンを含む場合に一致(大文字小文字を区別)
    bitand - ビット単位の AND
    regexp - pattern で指定した正規表現に大文字小文字を区別して一致
    iregexp - pattern で指定した正規表現に大文字小文字を区別せず一致
  • pattern - 必要なパターン(文字列引数は二重引用符で囲む必要があります)。3 番目のパラメータで operator が指定されている場合にサポートされます。

コメント:

  • 履歴データに関連する foreach 関数(max_foreach、avg_foreach など)と count() を使用すると、パフォーマンスに影響を与える可能性があります。一方、設定データのみで動作する exists_foreach() を使用しても、そのような影響はありません。
  • オプションのパラメータ operator または pattern は、カンマの後に空のままにすることはできず、完全に省略する必要があります。
  • 3 番目のパラメータに bitand を指定した場合、4 番目の pattern パラメータには、スラッシュ / で区切った 2 つの数値を指定できます: number_to_compare_with/mask。count() は値と mask に対して「ビット単位の AND」を計算し、その結果を number_to_compare_with と比較します。「ビット単位の AND」の結果が number_to_compare_with と等しい場合、その値はカウントされます。
    number_to_compare_withmask が等しい場合は、mask のみを指定できます(/ は不要です)。
  • 3 番目のパラメータに regexp または iregexp を指定した場合、4 番目の pattern パラメータには通常の正規表現、または global@ で始まる)正規表現を指定できます。グローバル正規表現の場合、大文字小文字の区別はグローバル正規表現の設定を継承します。regexp の照合では、浮動小数点値は常に小数点 . の後に 4 桁で表されます。また、大きな数値では、10 進数(データベースに保存される)と 2 進数(Zabbix サーバーで使用される)の表現の差が 4 桁目の小数に影響する場合があることに注意してください。

例:

count(max_foreach(/*/net.if.in[*],1h)) #現在から過去 1 時間にデータを受信した net.if.in アイテムの数を計算する
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #ディスク使用率が 95% を超えるファイルシステムの数を計算する
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)

ヒストグラムのバケットから φ 分位数を計算します。
サポートされる foreach function: bucket_rate_foreach

パラメータ:

  • quantile - 0 ≤ φ ≤ 1;
  • bucketN, valueN - 手動で入力したパラメータのペア (>=2)、または bucket_rate_foreach の応答。

コメント:

  • 計算アイテムでのみサポートされます;
  • PromQL の 'histogram_quantile' に機能的に対応します;
  • 最後の 'Infinity' バケット ("+inf") の値が 0 の場合は -1 を返します。

例:

histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
item_count(item filter)

フィルター条件に一致する、設定内に存在するアイテムの数。
サポートされる値の型: Integer

パラメーター:

  • item filter - アイテム選択の条件。ホストグループ、ホスト、アイテムキー、タグによる参照が可能です。ワイルドカードがサポートされています。詳細は item filter を参照してください。

コメント:

  • 計算アイテムでのみサポートされます;
  • count(exists_foreach(item_filter)) 関数のエイリアスとして動作します。

例:

item_count(/*/agent.ping?[group="Host group 1"]) #the number of hosts with the *agent.ping* item in the "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)

定義された評価期間内の収集値における確率分布の「裾の厚さ」を示します。関連項目: Kurtosis
サポートされる値の型: Float, Integer
サポートされる foreach function: last_foreach

パラメーター: 共通パラメーターを参照してください。

例:

kurtosis(/host/system.cpu.util[,user],5m)>5 #5分間のCPU使用率の急激なスパイクを検知するトリガー
mad(/host/key,(sec|#num)<:time shift>)

定義された評価期間内の収集値における中央値絶対偏差です。関連項目: Median absolute deviation
サポートされる値の型: Float, Integer
サポートされる foreach function: last_foreach

パラメーター: 共通パラメーター を参照してください。

例:

last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #最後のCPU使用率の値が統計的に有意な場合に障害
max(/host/key,(sec|#num)<:time shift>)

定義された評価期間内におけるアイテムの最大値。
サポートされる値の型: Float, Integer
サポートされる foreach functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

パラメーター: 共通パラメーターを参照してください。

例:

max(/host/key,1h) - min(/host/key,1h) #現在から直近1時間以内の最大値と最小値の差を計算する(値のデルタ)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #すべてのLinuxサーバーにおけるディスク使用率の最大値を返す
min(/host/key,(sec|#num)<:time shift>)

定義された評価期間内におけるアイテムの最小値。
サポートされる値の型: Float, Integer
サポートされる foreach functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

パラメーター: 共通パラメーター を参照してください。

例:

max(/host/key,1h) - min(/host/key,1h) #現在から直近1時間までの最大値と最小値の差を計算する(値のデルタ)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #すべての Linux サーバーにわたる任意のインターフェースの稼働状態の最小値を返す
skewness(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の確率分布の非対称性です。参照: Skewness
サポートされる値の型: Float, Integer
サポートされる foreach function: last_foreach

パラメーター: 共通パラメーター を参照してください。

例:

skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
stddevpop(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の母標準偏差です。あわせて参照: 標準偏差
サポートされる値の型: Float, Integer
サポートされる foreach function: last_foreach

パラメーター: 共通パラメーター を参照してください。

例:

stddevpop(/host/system.cpu.util[,user],10m)>7 #CPU usage fluctuates heavily (population standard deviation is above 7)
stddevsamp(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の標本標準偏差です。参照: Standard deviation
対応する値の型: Float, Integer
対応する foreach function: last_foreach

パラメーター: 共通パラメーターを参照してください。

この関数を動作させるには、少なくとも2つのデータ値が必要です。

例:

stddevsamp(/host/system.cpu.util[,user],10m)>7 #CPU usage fluctuates heavily (sample standard deviation is above 7)
sum(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の合計。
サポートされる値の型: Float, Integer
サポートされる foreach functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach

パラメーター: 共通パラメーター を参照してください。

例:

sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #Linuxサーバー全体の受信ネットワークトラフィックにおける最新値の合計
sumofsquares(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の二乗和。
サポートされる値の型: Float, Integer
サポートされる foreach function: last_foreach

パラメーター: 共通パラメーター を参照してください。

例:

sumofsquares(/host/calculated.net.if.rate,1m) #ネットワークトラフィック率(受信 vs 送信)の二乗和
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #すべての Linux サーバーにわたる最新の受信ネットワークトラフィック値の二乗和
varpop(/host/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の母分散。関連項目: Variance
対応する値の型: Float, Integer
対応する foreach function: last_foreach

パラメーター: 共通パラメーター を参照してください。

例:

varpop(/host/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動している場合(分散が50を超える)
varsamp(/ホスト/key,(sec|#num)<:time shift>)

定義された評価期間内に収集された値の標本分散です。参照: Variance.
サポートされる値の型: Float, Integer.
サポートされる foreach function: last_foreach.

パラメーター: 共通パラメーターを参照してください。

この関数を動作させるには、少なくとも2つのデータ値が必要です。

例:

varsamp(/ホスト/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動している場合(標本分散が50を超える)

サポートされているすべての関数を参照してください。