You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

4 ヒストリ関数

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

関数は追加情報なしでリストされています。 関数をクリックすると、詳細が表示されます。

関数 説明
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は、ホストアイテムの履歴を参照する関数の共通の必須最初のパラメータです
  • (sec|#num)<:time shift>は、ホストアイテムの履歴を参照する関数の共通の2番目のパラメータで、以下の通りです:
    • sec - 秒単位の最大評価期間(時間のサフィックスが使用可能)、または
    • #num - 最新の収集値での最大評価範囲(ハッシュマークが先頭にある場合)
    • 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) #現在までの直近1週間の値の変化数
       changecount(/host/key,#10,"inc") #直近10個の値の中で(隣接する値に対して)増加した回数
       changecount(/host/key,24h,"dec") #現在までの直近24時間の間に(隣接する値に対して)減少した回数
count(/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の精度で一致します。
  • likeはinteger値のoperatorとしてはサポートされていません。
  • likeおよびbitandはfloat値のoperatorとしてはサポートされていません。
  • string, text, log値ではeq, ne, like, regexp, iregexpのみがサポートされています。
  • 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時間前の10分間から24時間前までの間で「12」より大きい値の数
       count(/host/key,10m,"bitand","6/7") #現在までの直近10分間で下位3ビットが「110」(2進数)の値の数
       count(/host/key,10m:now-1d) #現在から24時間前の10分間から24時間前までの間の値の数
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値のoperatorとしてlikeはサポートされていません。
  • float値のoperatorとしてlikeおよびbitandはサポートされていません。
  • string, text, log値ではeq, ne, like, regexp, iregexpのみがサポートされています。
  • operatorにbitandを指定した場合、4番目のpatternパラメータは「number_to_compare_with/mask」のように「/」で区切った2つの数値で指定できます。countunique()は値と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番目の小数点以下の桁に影響する場合があります。

例:

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時間前から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)<:time shift>,<operator>,<pattern>)

定義された評価期間内で値の一致を検索します。
サポートされている値の型: Float, Integer, String, Text, Log
戻り値: 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 - 必要なパターン (文字列引数はダブルクォートで囲む必要あり); operatorregexpまたはiregexpの場合はPerl互換正規表現 (PCRE)の正規表現

コメント:

  • 複数の値が処理される場合、一致する値が1つでもあれば'1'を返します。
  • integer値ではlikeはoperatorとしてサポートされていません。
  • float値ではlikeおよびbitandはoperatorとしてサポートされていません。
  • string, text, log値ではeq, ne, like, regexp, iregexpのみが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) #現在までの直近1時間で最も古い値を取得
firstclock(/host/key,sec<:time shift>)

定義された評価期間内で最も古い値のタイムスタンプ。
サポートされる値の型: Float, Integer, String, Text, Log

パラメータ:

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

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 - それ以外の場合。

パラメータ:

コメント:

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

例:

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

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つの値ではない)。
  • 1秒以内に履歴に2つ以上の値が存在する場合、Zabbixは値の正確な順序を保証しません。
  • first()も参照してください。

例:

last(/host/key) #最新の値を取得
       last(/host/key,#2) #前回の値を取得
       last(/host/key,#1) <> last(/host/key,#2) #最新の値と前回の値が異なる
lastclock(/host/key,<#num<:time shift>>)

定義された評価期間内でN番目に新しい値のタイムスタンプ。
サポートされている値の型: Float, Integer, String, Text, Log

パラメータ:

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

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

例:

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

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

パラメータ:

  • 共通パラメータを参照
  • #num (オプション) - 最新からN番目の値
  • pattern (オプション) - 必要なパターンを記述する正規表現、Perl互換正規表現 (PCRE)スタイル(文字列引数はダブルクォーテーションで囲む必要があります)
logseverity(/host/key,<#num<:time shift>>)

最後のログエントリのログ重大度。
サポートされている値の型: Log
返り値: 0 - デフォルトの重大度; N - 重大度 (整数、Windowsイベントログに便利: 1 - Information, 2 - Warning, 4 - Error, 7 - Failure Audit, 8 - Success Audit, 9 - Critical, 10 - Verbose)。

パラメータ:

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<:time shift>>)

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>)

値が単調減少しているかどうかを確認します。
サポートされている値の型: 整数
戻り値: 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>)

データが受信されていないことをチェックします。
サポートされている値の型: 整数浮動小数点文字列テキストログ
戻り値: 指定した期間内にデータが受信されなかった場合は1、それ以外は0。

パラメータ:

  • 共通パラメータを参照
  • sec - この関数はヒストリーシンカーが30秒ごとにのみ計算するため、期間は30秒未満にしないでください。nodata(/host/key,0)は許可されていません
  • mode - strict(ダブルクォーテーションで囲む)を指定すると、プロキシの可用性に影響されなくなります(詳細はコメントを参照)

コメント:

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

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

パラメータ:

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

指定した期間内で単調増加するカウンターの1秒あたりの平均増加率。
サポートされている値の型: Float, Integer

パラメータ:

PromQLの'rate'に機能的に対応。

例:

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

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