Foreach関数は集計計算で使用され、使用されたアイテムフィルタによって選択された各アイテムの集計値を1つ返します。値の配列が返されます。
たとえば、avg_foreach関数は、指定された時間間隔内に選択されたアイテムの平均履歴値ごとに値の配列を返します。
itemフィルタはforeach関数で使用される構文の一部です。 アイテムフィルタではワイルドカードの使用がサポートされているため、必要なアイテムを柔軟に選択できます。
| 関数 | 説明 |
|---|---|
| avg_foreach | 各アイテムの平均値を返します。 |
| bucket_rate_foreach | histogram_quantile()関数で使用するのに適したペア(バケットの上限、レート値)を返します。ここで「バケットの上限」は、<パラメータ番号> パラメータで定義されたアイテムキーのパラメータの値です。 |
| count_foreach | 各アイテムの値の数を返します。 |
| exists_foreach | 有効な各アイテムに対して「1」を返します。 |
| last_foreach | 各アイテムの最新値を返します。 |
| max_foreach | 各アイテムの最大値を返します。 |
| min_foreach | 各アイテムの最小値を返します。 |
| sum_foreach | 各アイテムの値の合計を返します。 |
Foreach関数は、2つの共通パラメータ、アイテムフィルタ(詳細は下記参照)と時間期間をサポートします。
例:
avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m)
は、MySQLサーバーグループ内の各'mysql.qps'アイテムの5分間の平均値を返します。
一部の関数は追加のパラメータをサポートしていることに注意してください。
アイテムフィルタ:
は4つの部分で構成されます:
スペースは条件式の中でのみ許可されます。
ワイルドカードの使用
/host/* および /*/key は有効なフィルタですが、/*/* は無効です。key[abc,*,*])。条件式
条件式は以下をサポートします:
"<text>" - 文字列定数。" および \ をエスケープするには \ を使用=, <>and, or, not( )文字列定数の引用は必須です。大文字小文字を区別した完全一致のみがサポートされます。
フィルタでタグを指定する場合 (例: tag="tagname:value")、コロン ":" は区切り文字として使用されます。 コロン以降はすべてタグ値と見なされます。したがって、現時点では":"を含むタグ名の指定はサポートされていません。
例
アイテムキー、ホストグループ、タグを参照する複雑なフィルタを使用することができ、以下の例で示されています:
| 構文例 | 説明 |
|---|---|
/host/key[abc,*] |
このホスト上の類似アイテムに一致します。 |
/*/key |
任意のホストの同じアイテムに一致します。 |
/*/key?[group="ABC" and tag="tagname:value"] |
ABCグループの任意のホストで 'tagname:value' タグを持つ同じアイテムに一致します。 |
/*/key[a,*,c]?[(group="ABC" and tag="Tag1") or (group="DEF" and (tag="Tag2" or tag="Tag3:value"))] |
ABCまたはDEFグループの任意のホストで、それぞれのタグを持つ類似アイテムに一致します。 |
参照されるすべてのアイテムは存在し、データを収集している必要があります。 有効なホスト上の有効なアイテムのみが計算に含まれます。 サポートされていない状態のアイテムは含まれません。
参照アイテムのアイテムキーが変更された場合、フィルタは手動で更新する必要があります。
親ホストグループを指定すると、親グループとすべてのネストされたホストグループおよびそのアイテムが含まれます。
2番目のパラメーターでは、集計の期間を指定できます。 期間は時間でのみ表現でき、値の数(#で始まる)はサポートされていません。
このパラメーターには、利便性のためにサポートされている単位記号を使用できます。 たとえば、'300s'(300秒)の代わりに'5m'(5分)、'86400'(86400秒)の代わりに'1d'(1日)などです。
last_foreach関数の期間はオプションのパラメーターです(Zabbix 7.0以降でサポート)。省略することもできます。
exists_foreach関数では期間はサポートされていません。
bucket_rate_foreach
bucket_rate_foreach関数では、3番目のオプションパラメータがサポートされています:
ここで、<parameter number>はアイテムキー内の「bucket」値の位置です。 例えば、myItem[aaa,0.2]の「bucket」値が'0.2'の場合、その位置は2です。
<parameter number>のデフォルト値は「1」です。
count_foreach
count_foreach関数では、3番目と4番目のオプションパラメータがサポートされています:
ここで:
operator:patternで指定された正規表現に大文字小文字を区別して一致patternで指定された正規表現に大文字小文字を区別せずに一致コメント:
patternパラメータは「/」で区切った2つの数値として指定できます:number_to_compare_with/mask。count_foreach()は値とmaskの「ビットごとのAND」を計算し、その結果をnumber_to_compare_withと比較します。「ビットごとのAND」の結果がnumber_to_compare_withと等しい場合、その値がカウントされます。patternパラメータは通常の正規表現またはグローバル(「@」で始まる)正規表現にできます。グローバル正規表現の場合、大文字小文字の区別はグローバル正規表現の設定から継承されます。正規表現マッチングの目的で、float値は常に「.」の後に4桁の小数で表されます。また、大きな数値の場合、10進数(データベースに保存)と2進数(Zabbixサーバーで使用)表現の違いが4桁目の小数に影響する場合があります。foreach関数の使用に関する詳細および例については、集計計算を参照してください。
次の表は、ホスト/アイテムおよび履歴データの可用性が制限されている場合に、各関数がどのように動作するかを示しています。
| 関数 | 無効なホスト | データがある利用不可ホスト | データがない利用不可ホスト | 無効なアイテム | 非サポートアイテム | データ取得エラー(SQL) |
|---|---|---|---|---|---|---|
| avg_foreach | 無視 | 平均値を返す | 無視 | 無視 | 無視 | 無視 |
| bucket_rate_foreach | 無視 | バケットレートを返す | 無視 | 無視 | 無視 | 無視 |
| count_foreach | 無視 | カウントを返す | 0 | 無視 | 無視 | 無視 |
| exists_foreach | 無視 | 1 | 1 | 無視 | 1 | n/a |
| last_foreach | 無視 | 最新値を返す | 無視 | 無視 | 無視 | 無視 |
| max_foreach | 無視 | 最大値を返す | 無視 | 無視 | 無視 | 無視 |
| min_foreach | 無視 | 最小値を返す | 無視 | 無視 | 無視 | 無視 |
| sum_foreach | 無視 | 合計値を返す | 無視 | 無視 | 無視 | 無視 |
アイテムが無視された場合、集計には何も加算されません。