4 履歴関数

ここに記載されているすべての関数は、以下でサポートされています。

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

Function Description
change 直前の値と最新の値の差分量。
changecount 定義された評価期間内における隣接する値の間の変化回数。
count 定義された評価期間内の値の数。
countunique 定義された評価期間内の一意な値の数。
find 定義された評価期間内で値の一致を検索。
first 定義された評価期間内の最初の(最も古い)値。
firstclock 定義された評価期間内の最初の(最も古い)値のタイムスタンプ。
fuzzytime パッシブエージェントの時刻がZabbixサーバー/プロキシの時刻とどの程度異なるかを確認。
last 最新の値。
lastclock 定義された評価期間内の新しい順でN番目の値のタイムスタンプ。
logeventid 最後のログエントリのイベントIDが正規表現に一致するかを確認。
logseverity 最後のログエントリのログ重要度。
logsource 最後のログエントリのログソースが正規表現に一致するかを確認。
logtimestamp 新しい順でN番目のログアイテム値のログメッセージタイムスタンプ。
monodec 値が単調減少しているかを確認。
monoinc 値が単調増加しているかを確認。
nodata データを受信していないことを確認。
percentile 期間のPパーセンタイル値。P(パーセンテージ)は3番目のパラメータで指定されます。
rate 定義された期間内で単調増加するカウンターの増加量について、1秒あたりの平均レート。
共通パラメータ
  • /host/key は、ホストのアイテム履歴を参照する関数に共通する必須の第1パラメータです
  • (sec|#num)<:time shift> は、ホストのアイテム履歴を参照する関数に共通する第2パラメータで、以下を意味します。
    • sec - 秒単位の最大評価期間(時間のサフィックスを使用できます)、または
    • #num - 直近に収集された値における最大評価範囲(ハッシュ記号が前に付く場合)
    • time shift(任意) - 評価時点を過去に移動できます。 time shift の指定方法の詳細は、こちらを参照してください。

関数の詳細

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

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

直前の値と最新の値の差分量です。
サポートされる値の型: Float, Integer, String, Text, Log
文字列の場合の戻り値: 0 - 値が等しい; 1 - 値が異なる。

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

コメント:

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

例:

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

定義された評価期間内における、隣接する値の間の変化回数。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

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

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

例:

changecount(/host/key,1w) #the number of value changes for the last week until now
changecount(/host/key,#10,"inc") #the number of value increases (relative to the adjacent value) among the last 10 values
changecount(/host/key,24h,"dec") #the number of value decreases (relative to the adjacent value) for the last 24 hours until now
count(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)

定義された評価期間内の値の数です。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

  • 共通パラメータを参照してください
  • operator (二重引用符で囲む必要があります) サポートされるoperators:
    eq - 等しい(integer、floatのデフォルト)
    ne - 等しくない
    gt - より大きい
    ge - 以上
    lt - より小さい
    le - 以下
    like (string、text、logのデフォルト) - パターンを含む場合に一致(大文字・小文字を区別)
    bitand - ビット単位AND
    regexp - patternで指定された正規表現との大文字・小文字を区別する一致
    iregexp - patternで指定された正規表現との大文字・小文字を区別しない一致
  • pattern - 必要なパターン(文字列引数は二重引用符で囲む必要があります)

コメント:

  • Floatアイテムは2.22e-16の精度で一致判定されます。
  • like はinteger値のoperatorとしてはサポートされていません。
  • likebitand はfloat値のoperatorとしてはサポートされていません。
  • string、text、log値では、eqnelikeregexpiregexp のoperatorのみがサポートされます。
  • operatorとして 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 のみを指定できます('/' なし)。
  • operatorとして regexp または iregexp を使用する場合、4番目のpatternパラメータには通常の正規表現またはグローバル('@' で始まる)正規表現を指定できます。 グローバル正規表現の場合、大文字・小文字の区別はグローバル正規表現の設定を継承します。 regexp照合のために、float値は常に '.' の後に小数点以下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ビットが '110'(2進数)である値の数
count(/host/key,10m:now-1d) #現在から24時間前の時点を基準に、その24時間前から10分後までの間の値の数
countunique(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)

定義された評価期間内の一意な値の数です。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

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

コメント:

  • Floatアイテムは 2.22e-16 の精度で一致します。
  • integer 値では、like は operator としてサポートされません。
  • float 値では、like および bitand は operator としてサポートされません。
  • string、text、log 値では、eqnelikeregexpiregexp の各 operator のみがサポートされます。
  • operator に bitand を使用する場合、4 番目の pattern パラメータは 比較値/マスク のように、'/' で区切られた 2 つの数値として指定できます。countunique() は値と mask の「ビット単位AND」を計算し、その結果を number_to_compare_with と比較します。 「ビット単位AND」の結果が number_to_compare_with と等しい場合、その値はカウントされます。
    number_to_compare_withmask が等しい場合は、mask のみを指定できます('/' は不要)。
  • operator に regexp または iregexp を使用する場合、4 番目の pattern パラメータには通常の正規表現、またはグローバル('@' で始まる)正規表現を指定できます。 グローバル正規表現の場合、大文字・小文字の区別はグローバル正規表現の設定から継承されます。 正規表現マッチングのために、float 値は常に '.' の後に小数点以下 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,10m:now-1d,"gt",12) #現時点から24時間前の時点を基準に、その10分前から24時間前までの間で '12' より大きかった一意な値の数
countunique(/host/key,10m,"bitand","6/7") #現時点までの直近10分間で、下位3ビットに '110'(2進数)を持つ一意な値の数
countunique(/host/key,10m:now-1d) #現時点から24時間前の時点を基準に、その10分前から24時間前までの間の一意な値の数
find(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)

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

パラメータ:

  • 共通パラメータを参照
  • sec または #num (任意) - 指定しない場合は最新の値がデフォルトで使用されます
  • operator (二重引用符で囲む必要があります) サポートされるoperator:
    eq - 等しい (integer、float のデフォルト)
    ne - 等しくない
    gt - より大きい
    ge - 以上
    lt - より小さい
    le - 以下
    like (string、text、log のデフォルト) - pattern で指定された文字列を含む場合に一致します (大文字と小文字を区別)
    bitand - ビット単位AND
    regexp - pattern で指定された正規表現との大文字と小文字を区別する一致
    iregexp - pattern で指定された正規表現との大文字と小文字を区別しない一致
  • pattern - 必要なパターン (文字列引数は二重引用符で囲む必要があります); operatorregexpiregexp の場合は Perl Compatible Regular Expression (PCRE) 正規表現

コメント:

  • 複数の値が処理される場合、一致する値が少なくとも1つあれば '1' が返されます。
  • integer 値では like は operator としてサポートされません。
  • float 値では likebitand は operator としてサポートされません。
  • string、text、log 値では eqnelikeregexpiregexp の各 operator のみがサポートされます。
  • operator として regexp または iregexp を使用する場合、4番目の pattern パラメータには通常の正規表現またはグローバル (先頭が '@') 正規表現を指定できます。 グローバル正規表現の場合、大文字と小文字の区別はグローバル正規表現の設定から継承されます。

例:

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

定義された評価期間内の最初の(最も古い)値です。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

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

例:

first(/host/key,1h) #retrieve the oldest value within the last hour until now
firstclock(/host/key,sec<:timeshift>)

定義された評価期間内で最も古い値のタイムスタンプ
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

指定された期間内にデータが収集されていない場合、この関数はエラーで失敗します。

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

例:

firstclock(/host/key,1h) #過去1時間以内で最も古い値のタイムスタンプを取得します。
firstclock(/host/key,1h:now-24h) #1日前の過去1時間以内で最も古い値のタイムスタンプを取得します。
fuzzytime(/host/key,sec)

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

パラメータ:

コメント:

  • 通常、ローカル時刻が Zabbix サーバーのローカル時刻と同期していることを確認するために、'system.localtime' アイテムとともに使用されます。 :'system.localtime' は、Zabbix エージェントでは パッシブチェック として設定する必要があります。Zabbix エージェント 2 では、アクティブチェックとして設定することもできます。
  • vfs.file.time[/path/file,modify] キーとともに使用して、ファイルが長時間更新されていないことを確認することもできます。
  • この関数は、複雑なトリガー条件式(複数のアイテムが関係するもの)での使用は推奨されません。予期しない結果を引き起こす可能性があるためです(時刻差は最新のメトリクスで測定されます)。例: fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0

例:

fuzzytime(/host/key,60s)=0 #時刻差が 60 秒を超えた場合に問題を検出<br><br>
last(/host/key,<#num<:time shift>>)

最新の値。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

コメント:

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

例:

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

定義された評価期間におけるN番目に最新の値のタイムスタンプ
サポートされる値の型: FloatIntegerStringTextLog

パラメーター:

指定された期間にデータが収集されていない場合、またはN番目の値が収集されていない場合、関数はエラーで失敗します。

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

例:

lastclock(/host/key) # 最新の値のタイムスタンプを取得
lastclock(/host/key,#2) # 2番目に新しい値のタイムスタンプを取得
lastclock(/host/key,#3:now-1d) # 1日前の3番目に新しい値のタイムスタンプを取得
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<:time shift>>,<pattern>)

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

パラメータ:

  • 共通パラメータを参照してください
  • #num (任意) - 新しい順でN番目の値
  • pattern (任意) - 必要なパターンを記述する正規表現、Perl Compatible Regular Expression (PCRE) 形式(文字列引数は二重引用符で囲む必要があります)

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

例:

logsource(/host/key,,"VMware Server")
logtimestamp(/host/key,<#num<:timeshift>>)

N番目に最新のログ項目値のログメッセージのタイムスタンプ
サポートされる値の型: Log

パラメータ:

コメント:

  • タイムシフトの計算は、ログメッセージのタイムスタンプではなく、項目値のクロックに基づきます。
  • 以下の場合、関数はエラーで失敗します。
  • ログタイプではない項目を受信した場合。
  • 指定された期間内にデータが収集されていない場合。
  • N番目の値が収集されていない場合。
  • ログメッセージにタイムスタンプ値が含まれていない場合。

例:

logtimestamp(/host/key) # 最新のログメッセージのタイムスタンプを取得
logtimestamp(/host/key,#2) # 2番目に新しいログメッセージのタイムスタンプを取得
logtimestamp(/host/key,#3:now-1d) # 1日前の3番目に新しいログメッセージのタイムスタンプを取得
monodec(/host/key,(sec|#num)<:time shift>,<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)<:time shift>,<mode>)

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

パラメータ:

  • 共通パラメータを参照してください
  • mode(二重引用符で囲む必要があります) - weak(各値が直前の値以上である; デフォルト)または strict(各値が増加している)

例:

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

データを受信していないことを確認します。
サポートされる値の型: Integer, Float, Character, Text, Log
戻り値: 定義された期間中にデータを受信していない場合は 1、それ以外は 0。

パラメータ:

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

コメント:

  • プロキシによって監視される 'nodata' トリガーは、デフォルトでプロキシの可用性の影響を受けます。プロキシが利用不可になった場合、接続が復旧した直後に 'nodata' トリガーが発火することはなく、遅延した期間のデータはスキップされます。 パッシブプロキシでは、接続が2秒以上15秒超遅れて復旧した場合に抑制が有効になります。 アクティブプロキシでは、接続が15秒超遅れて復旧した場合に抑制が有効になります。 プロキシの可用性の影響を無効にするには、第3パラメータを使用します。例: nodata(/host/key,5m,"strict")。この場合、データがない評価期間(5分)が経過するとすぐにこの関数は発火します。
  • この関数は、第1パラメータの期間内に次の場合エラーを表示します:
    - データがなく、Zabbixサーバーが再起動された場合
    - データがなく、メンテナンスが完了した場合
    - データがなく、アイテムが追加または再度有効化された場合。
  • エラーは、トリガーの設定Info 列に表示されます。
  • Zabbixサーバー、プロキシ、エージェントの間に時刻のずれがある場合、この関数は正しく動作しない可能性があります。 関連項目: 時刻同期の要件
percentile(/host/key,(sec|#num)<:timeshift>,percentage)

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

パラメータ:

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

定義された期間内における、単調増加するカウンターの増加量の1秒あたりの平均レートです。
サポートされる値の型: Float, Integer

パラメータ:

機能的には、PromQL の 'rate' に対応します。

例:

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

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