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パラメータです。ここで:
関数の詳細
関数パラメータに関する一般的な注意事項:
- 関数パラメータはカンマで区切ります
- オプションの関数パラメータ(またはパラメータの一部)は
<>で示されます - 関数固有のパラメータは各関数で説明されています
/host/keyおよび(sec|#num)<:time shift>パラメータは 決して引用符で囲まないでください
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) #calculate the average value for the last hour until now
avg(/host/key,#5) #calculate the average value of the five latest values
avg(/host/key,1h:now-1d) #calculate the average value for an hour from 25 hours ago to 24 hours ago from now
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calculate the average processor load for all MySQL servers
avg(/host/proc.num,5m)>300 #trigger if the average number of processes in the last 5 minutes has been above 300
bucket_percentile(item filter,time period,percentage)
ヒストグラムのバケットからパーセンタイルを計算します。
パラメーター:
- item filter - item filter を参照してください。
- time period - time period を参照してください。
- percentage - パーセンテージ (0-100)。
コメント:
- calculated item でのみサポートされます。
- この関数は
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 - アイテムフィルター を参照してください。
- 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 つの数値を指定できます: 比較対象の数値/マスク。count() は値と mask に対して「ビット単位の AND」を計算し、その結果を 比較対象の数値 と比較します。「ビット単位の AND」の結果が 比較対象の数値 と等しい場合、その値はカウントされます。
比較対象の数値 と mask が等しい場合は、mask のみを指定できます(/は不要です)。 - 3 番目のパラメーターとして regexp または iregexp を指定した場合、4 番目の
patternパラメーターには通常の正規表現、または グローバル(@で始まる)正規表現を指定できます。グローバル正規表現の場合、大文字小文字の区別はグローバル正規表現の設定を継承します。regexp の照合では、浮動小数点値は常に小数点.の後に 4 桁で表されます。また、大きな数値では、10 進数(データベースに保存)と 2 進数(Zabbix サーバーで使用)の表現の違いが 4 桁目の小数に影響する場合があることに注意してください。
例:
count(max_foreach(/*/net.if.in[*],1h)) #calculate the number of net.if.in items that received data in the last hour until now
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculate the number of file systems with over 95% of disk space used
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"]) # "Host group 1" にある agent.ping アイテムを持つホスト数を計算する
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) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #return the highest disk usage across all Linux servers
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>)
定義された評価期間内の収集値における母標準偏差です。参照: Standard deviation。
サポートされる値の型: Float, Integer。
サポートされる foreach function: last_foreach。
パラメーター: 共通パラメーター を参照してください。
例:
stddevpop(/host/system.cpu.util[,user],10m)>7 #trigger if CPU usage fluctuates heavily (population standard deviation is above 7 over 10 minutes)
stddevsamp(/host/key,(sec|#num)<:time shift>)
定義された評価期間内に収集された値の標本標準偏差です。関連項目: 標準偏差。
サポートされる値の型: Float, Integer。
サポートされる foreach function: last_foreach。
パラメーター: 共通パラメーターを参照してください。
この関数を動作させるには、少なくとも 2 つのデータ値が必要です。
例:
stddevsamp(/host/system.cpu.util[,user],10m)>7 #CPU使用率が大きく変動している場合にトリガーする(10分間の標本標準偏差が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 サーバーの受信ネットワークトラフィックの合計を計算する
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #すべての MySQL サーバーのディスク容量の合計を計算する
sum(last_foreach(/*/net.dns[*,*,*])) #成功した DNS チェックの総数を計算する
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(/ホスト/key,(sec|#num)<:time shift>)
定義された評価期間内に収集された値の母分散です。参照: Variance。
サポートされる値の型: Float, Integer。
サポートされる foreach function: last_foreach。
パラメーター: 共通パラメーター を参照してください。
例:
varpop(/ホスト/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動する場合にトリガーする(分散が10分間で50を超える)
varsamp(/ホスト/key,(sec|#num)<:time shift>)
定義された評価期間内に収集された値の標本分散です。参照: Variance。
対応する値の型: Float, Integer。
対応する foreach function: last_foreach。
パラメーター: 共通パラメーターを参照してください。
この関数を動作させるには、少なくとも2つのデータ値が必要です。
例:
varsamp(/ホスト/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動している場合に障害とする(10分間の標本分散が50を超える)
サポートされているすべての関数を参照してください。