This is a translation of the original English documentation page. Help us make it better.

4 ヒストリ関数

ここにリストされているすべての機能は、次でサポートされています。

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

  • 関数パラメータはコンマで区切られます。
  • オプションの関数パラメーター (またはパラメーター部分) は < > で示されます
  • 機能固有のパラメーターは、各機能で説明されています
  • /host/key(sec|#num)<:time shift> はパラメータを引用符で囲んではいけません
共通パラメータ
  • /host/key はホストアイテムの履歴を参照する関数の一般的なパラメーターの一つ目です。必須です。
  • (sec|#num)<:time shift> は、ホストのアイテム履歴を参照する関数の一般的なパラメーターの二つ目です。
    • sec - 秒単位の最大評価期間 (タイムサフィックス を使用できます) または
    • #num - 最新の収集値の最大評価範囲 (先頭にハッシュ マークがある場合)
    • time shift (オプション) 評価ポイントを時間内に戻すことができます。 時間シフトの指定については詳細を参照してください。

関数の詳細

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

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

前の値と最新の値の差
サポートされる値の型: FloatIntegerStringTextLog
文字列の場合、戻り値: 0 - 値が等しい、1 - 値が異なっている。

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

コメント:

  • 数値の差が計算されます。以下の例のように、入力値 ('前の値'と'最新の値' = 差) が計算されます。
    '1' と '5' = +4
    '3' と '1' = -2
    '0' と '-2.5' = -2.5
  • 比較については、abs も参照してください。

例:

change(/host/key)>10
changecount(/host/key,(sec|#num)<:timeshift>,<mode>)

定義された評価期間内における、隣接する値間の変更回数
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

  • 共通パラメーター を参照してください。
  • mode (二重引用符で囲む必要があります) - 指定可能な値: all - すべての変更をカウント (デフォルト); dec - カウントを減少; inc - カウントを増加

数値以外の値型の場合、mode パラメーターは無視されます。

例:

changecount(/host/key,1w) #過去1週間から現在までのキー値の変更回数
       changecount(/host/key,#10,"inc") #過去10個のキー値のうち、隣接するキー値と比較して増加したキー値の数
       changecount(/host/key,24h,"dec") #過去24時間から現在までのキー値と比較して減少したキー値の数
count(/host/key,(sec|#num)<:timeshift>,<operator>,<pattern>)

定義された評価期間内の値の数。
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

  • 共通パラメーター を参照してください。
  • operator (二重引用符で囲む必要があります)。サポートされている演算子:
    eq - 等しい (整数、浮動小数点のデフォルト)
    ne - 等しくない
    gt - 大きい
    ge - 以上
    lt - 小さい
    le - 以下
    like (文字列、テキスト、ログのデフォルト) - パターンを含む場合に一致 (大文字と小文字を区別)
    bitand - ビットごとの AND
    regexp - pattern で指定された正規表現と大文字と小文字を区別して一致
    iregexp - pattern で指定された正規表現と大文字と小文字を区別せずに一致
  • pattern - 必要なパターン (文字列引数は二重引用符で囲む必要があります)

コメント:

  • 浮動小数点項目は 2.22e-16 の精度で一致します。
  • like は整数値の演算子としてサポートされていません。
  • likebitand は浮動小数点値の演算子としてサポートされていません。
  • 文字列、テキスト、およびログ値の場合、eqnelikeregexpiregexp 演算子のみがサポートされます。
  • 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 のみを指定する必要があります('/' は不要です)。
  • regexp または iregexp を演算子として使用する場合、4 番目の pattern パラメータには通常の正規表現または global ('@' で始まる) 正規表現を指定できます。グローバル正規表現の場合、大文字と小文字の区別はグローバル正規表現設定から継承されます。正規表現マッチングのため、浮動小数点値は常に '.' の後に 4 桁の小数点以下で表されます。また、大きな数値の場合、10 進数 (データベースに保存) と 2 進数 (Zabbix サーバーで使用される) の表現の違いが 4 桁目の小数点以下の桁数に影響する可能性があることに注意してください。

例:

count(/host/key,10m) # 現在までの過去10分間の値
       count(/host/key,10m,"like","error") # 現在までの過去10分間の値のうち、'error' を含む値の数
       count(/host/key,10m,,12) # 現在までの過去10分間の値のうち、'12' に等しい値の数
       count(/host/key,10m,"gt",12) # 現在までの過去10分間の値のうち、'12' を超える値の数
       count(/host/key,#10,"gt",12) # 現在までの過去10分間の値のうち、'12' を超える値の数
       count(/host/key,10m:now-1d,"gt",12) # 現在から24時間前と24時間10分の間に、'12' を超えた値の数
       count(/host/key,10m,"bitand","6/7") # 過去10分間の値のうち、最下位3ビットが(2進数で)'110'である値の数
       count(/host/key,10m:now-1d) # 現在から24時間10分前までの値の数
countunique(/host/key,(sec|#num)<:timeshift>,<operator>,<pattern>)

定義された評価期間内の一意の値の数
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

  • 共通パラメーター を参照してください。
  • operator (二重引用符で囲む必要があります)。サポートされている演算子:
    eq - 等しい (整数、浮動小数点のデフォルト)
    ne - 等しくない
    gt - 大きい
    ge - 以上
    lt - 小さい
    le - 以下
    like (文字列、テキスト、ログのデフォルト) - パターンを含む場合に一致 (大文字と小文字を区別)
    bitand - ビットごとの AND
    regexp - pattern で指定された正規表現と大文字と小文字を区別して一致
    iregexp - pattern で指定された正規表現と大文字と小文字を区別せずに一致
  • pattern - 必要なパターン (文字列引数は二重引用符で囲む必要があります)

コメント:

  • 浮動小数点項目は 2.22e-16 の精度で一致します。
  • like は整数値の演算子としてサポートされていません。
  • likebitand は浮動小数点値の演算子としてサポートされていません。
  • 文字列、テキスト、およびログ値の場合、eqnelikeregexpiregexp 演算子のみがサポートされます。
  • 演算子として bitand を使用する場合、4 番目の pattern パラメータは '/' で区切られた 2 つの数値として指定できます:number_to_compare_with/mask。countunique() は、値と mask の"ビット単位の AND"を計算し、その結果を number_to_compare_with と比較します。"ビット単位の AND"の結果が number_to_compare_with と等しい場合、その値がカウントされます。
    number_to_compare_withmask が等しい場合は、mask のみを指定する必要があります('/' は不要です)。
  • regexp または iregexp を演算子として使用する場合、4 番目の pattern パラメータには通常の正規表現または global ('@' で始まる) 正規表現を指定できます。グローバル正規表現の場合、大文字と小文字の区別はグローバル正規表現設定から継承されます。正規表現マッチングのため、浮動小数点値は常に '.' の後に 4 桁の小数点以下で表されます。また、大きな数値の場合、10 進数 (データベースに保存) と 2 進数 (Zabbix サーバーで使用される) の表現の違いが 4 桁目の小数点以下の桁数に影響する可能性があることに注意してください。

例:

countunique(/host/key,10m) # 過去10分間のユニーク値の数
       countunique(/host/key,10m,"like","error") # 過去10分間のユニーク値のうち、'error' を含むものの数
       countunique(/host/key,10m,,12) # 過去10分間のユニーク値のうち、'12' に等しいものの数
       countunique(/host/key,10m,"gt",12) # 過去10分間のユニーク値のうち、'12' を超えるものの数
       countunique(/host/key,#10,"gt",12) # 過去10分間のユニーク値のうち、'12' を超えるものの数
       countunique(/host/key,#10,"gt",12) # 過去10回分のユニーク値のうち、'12' を超えるものの数
       countunique(/host/key,10m:now-1d,"gt",12) # 24時間前から24時間前10分までの間のユニーク値の数現在'12'を超えたもの
       countunique(/host/key,10m,"bitand","6/7") # 過去10分間で、最下位3ビットが「110」(2進数)であるユニーク値の数
       countunique(/host/key,10m:now-1d) # 現在から24時間前と24時間10分前の間にあるユニーク値の数
find(/host/key,(sec|#num)<:timeshift>,<operator>,<pattern>)

定義された評価期間内で一致する値を検索します。
サポートされる値の型: FloatIntegerStringTextLog
戻り値: 1 - 見つかった場合、0 - それ以外の場合

パラメーター:

  • 共通パラメーター を参照してください。
  • sec または #num (オプション) - 指定されていない場合は最新の値がデフォルトになります。
  • operator (二重引用符で囲む必要があります)。サポートされている operator:
    eq - 等しい (整数、浮動小数点数のデフォルト)
    ne - 等しくない
    gt - 大きい
    ge - 以上
    lt - 小さい
    le - 以下
    like (文字列、テキスト、ログのデフォルト) - pattern で指定された文字列を含む場合に一致 (大文字と小文字を区別)
    bitand - ビットごとの AND
    regexp - pattern で指定された正規表現と大文字と小文字を区別して一致
    iregexp - pattern で指定された正規表現と大文字と小文字を区別せずに一致
  • pattern - 必要なパターン (文字列引数は二重引用符で囲む必要があります)。operatorregexpiregexp の場合は Perl 互換正規表現 (PCRE) 正規表現。

コメント:

  • 複数の値が処理される場合、一致する値が少なくとも1つあれば '1' が返されます。
  • like は整数値の演算子としてサポートされていません。
  • likebitand は浮動小数点値の演算子としてサポートされていません。
  • 文字列、テキスト、およびログ値の場合、eqnelikeregexp、および iregexp 演算子のみがサポートされています。
  • regexp または iregexp を演算子として使用する場合、4番目の pattern パラメータには、通常の正規表現または global ('@' で始まる) 正規表現を指定できます。グローバル正規表現の場合、大文字と小文字の区別はグローバル正規表現の設定から継承されます。

例:

find(/host/key,10m,"like","error") # 過去10分から現在までの期間に 'error' を含む値を検索
first(/host/key,sec<:timeshift>)

定義された評価期間内の最初の(最も古い)値
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

last()も参照してください。

例:

first(/host/key,1h) #過去1時間以内で最も古い値を取得します
fuzzytime(/host/key,sec)

パッシブエージェントの時刻とZabbixサーバー/プロキシの時刻の差を確認します。
サポートされる値の型: FloatInteger
戻り値: 1 - パッシブアイテムの値(タイムスタンプ)とZabbixサーバー/プロキシのタイムスタンプ(値収集のクロック)の差がsec秒以下の場合。0 - それ以外の場合

パラメーター:

コメント:

  • 通常は「system.localtime」アイテムと組み合わせて使用し、ローカル時刻がZabbixサーバーのローカル時刻と同期していることを確認します。注意:「system.localtime」はパッシブチェックとして設定する必要があります。
  • vfs.file.time[/path/file,modify] キーと組み合わせて使用することで、ファイルが長期間更新されていないことを確認することもできます。
  • この関数は、複雑なトリガー式(複数の項目が関係する)での使用は推奨されません。予期しない結果が生じる可能性があるためです(時刻差は最新のメトリックで測定されます)。例えば、fuzzytime(/Host/system.localtime,60s)=0 や last(/Host/trap)<>0 などです。

例:

fuzzytime(/host/key,60s)=0 #時刻差が60秒を超える場合に問題を検出します

last(/host/key,<#num<:timeshift>>)

最新の値
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

コメント:

  • ハッシュタグ付きの期間 (#N) は、他の多くの関数とは異なる動作をすることに注意してください。例: last(/host/key) は常に last(/host/key,#1) と同じです。last(/host/key,#3) - 3番目に最新の値 (最新の3つの値ではありません)。
  • 履歴の1秒以内に2つ以上の値が存在する場合、Zabbix は値の正確な順序を保証しません。
  • first() も参照してください。

例:

last(/host/key) # 最後の値を取得
       last(/host/key,#2) # 前の値を取得
       last(/host/key,#1) <> last(/host/key,#2) # 最後の値と前の値は異なる
logeventid(/host/key,<#num<:timeshift>>,<pattern>)

最後のログエントリのイベントIDが正規表現と一致するかどうかを確認します。
サポートされる値の型: Log
戻り値: 0 - 一致しない; 1 - 一致する

パラメーター:

  • 共通パラメーター を参照してください。
  • #num (オプション) - N番目に最近の値
  • pattern (オプション) - 必要なパターンを記述する正規表現Perl互換正規表現 (PCRE) 形式(文字列引数は二重引用符で囲む必要があります)
logseverity(/host/key,<#num<:timeshift>>)

最後のログエントリのログ重要度
サポートされる値の型: Log
戻り値: 0 - デフォルトの重要度、N - 重要度(整数、Windows イベントログで有効:1 - 情報、2 - 警告、4 - エラー、7 - 監査失敗、8 - 監査成功、9 - 重大、10 - 詳細)

パラメーター:

Zabbix は、Windows イベントログの Information フィールドからログ重要度を取得します。

logsource(/host/key,<#num<:timeshift>>,<pattern>)

最後のログエントリのログソースが正規表現に一致するかどうかを確認します。
サポートされる値の型: Log
戻り値: 0 - 一致しない; 1 - 一致する

パラメーター:

  • 共通パラメーター を参照してください。
  • #num (オプション) - N番目に最新の値
  • pattern (オプション) - 必要なパターンを記述する正規表現Perl互換正規表現 (PCRE) 形式(文字列引数は二重引用符で囲む必要があります)

通常はWindowsイベントログに使用されます。

例:

logsource(/host/key,,"VMware Server")
monodec(/host/key,(sec|#num)<:timeshift>,<mode>)

値が単調減少しているかどうかを確認します。
サポートされる値の型: Integer
戻り値: 期間内のすべての要素が連続的に減少している場合は 1、それ以外の場合は 0

パラメーター:

  • 共通パラメーター を参照してください。
  • mode (二重引用符で囲む必要があります) - weak (すべての値が前の値より小さいか同じ。デフォルト) または strict (すべての値が減少している)

例:

monodec(/Host1/system.swap.size[all,free],60s) + monodec(/Host2/system.swap.size[all,free],60s) + monodec(/Host3/system.swap.size[all,free],60s) # 空きスワップサイズが減少したホストの数を計算します
monoinc(/host/key,(sec|#num)<:timeshift>,<mode>)

値が単調増加しているかどうかを確認します。
サポートされる値の型: Integer
戻り値: 期間内のすべての要素が連続的に増加している場合は 1、それ以外の場合は 0

パラメーター:

  • 共通パラメーター を参照してください。
  • mode (二重引用符で囲む必要があります) - weak (すべての値が前回の値より大きいか同じ。デフォルト) または strict (すべての値が増加している)

例:

monoinc(/Host1/system.localtime,#3,"strict")=0 #システムのローカル時刻が一貫して増加しているかどうかを確認します
nodata(/host/key,sec,<mode>)

受信データがないかどうかを確認します。
サポートされる値の型: IntegerFloatCharacterTextLog
戻り値: 1 - 指定された期間内にデータが受信されなかった場合。0 - それ以外の場合

パラメータ:

  • 共通パラメータ を参照してください。
  • sec - history syncer プロセスはこの関数を30秒ごとにしか計算しないため、期間は30秒未満にしないでください。nodata(/host/key,0) は許可されていません。
  • mode - strict (二重引用符で囲まれた) に設定されている場合、この関数はプロキシの可用性を考慮に入れません (詳細はコメントを参照してください)

コメント:

  • プロキシによって監視される「nodata」トリガーは、デフォルトでプロキシの可用性に依存します。プロキシが利用できなくなった場合、「nodata」トリガーは接続が回復した直後には起動せず、遅延期間のデータをスキップします。パッシブプロキシの場合、接続が回復してから15秒以上、かつ2秒以上経過すると抑制が有効になります。アクティブプロキシの場合、接続が回復してから15秒以上経過すると抑制が有効になります。プロキシの可用性への依存を無効にするには、3番目のパラメータを使用します。例: nodata(/host/key,5m,"strict");この場合、この関数はデータがない評価期間(5分)が経過するとすぐに実行されます。
  • この関数は、第1パラメータの期間内に以下の場合にエラーを表示します。
    - データがなく、Zabbixサーバーが再起動された場合
    - データがなく、メンテナンスが完了した場合
    - データがなく、アイテムが追加または再有効化された場合
  • トリガーの設定情報列にエラーが表示されます。
  • Zabbixサーバー、プロキシ、エージェント間に時刻差がある場合、この関数は正常に動作しない可能性があります。時刻同期の要件も参照してください。
  • nodata()関数は、式の中で単独で使用することはできません。式には、ホスト項目を参照する別のグループの関数を少なくとも1つ含める必要があります(日付と時刻の関数を除く)。nodata()関数が式内でどのように機能するかについては、計算時間を参照してください。
percentile(/host/key,(sec|#num)<:timeshift>,percentage)

期間のP番目のパーセンタイル。P(パーセンテージ)は3番目のパラメータで指定します。
サポートされる値の型:FloatInteger

パラメータ:

  • 共通パラメータを参照してください。
  • percentage - 0から100(両端値を含む)までの小数点以下4桁までの浮動小数点数
rate(/host/key,sec<:timeshift>)

定義された期間における単調増加カウンターの1秒あたりの平均増加率
サポートされる値の型: FloatInteger

パラメーター:

機能的には、PromQLの「rate」に相当します。

例:

rate(/host/key,30s) #30秒間の単調増加が20の場合、この関数は0.67を返します。

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