4 履歴関数

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

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

Function Description
change 直前の値と最新の値の差分量。
changecount 定義された評価期間内における隣接する値の間の変化回数。
count 定義された評価期間内の値の数。
countunique 定義された評価期間内の一意な値の数。
find 定義された評価期間内で値の一致を検索。
first 定義された評価期間内の最初の(最も古い)値。
fuzzytime パッシブエージェントの時刻が Zabbix サーバー/プロキシ の時刻とどの程度異なるかを確認。
last 最新の値。
logeventid 最後のログエントリのイベント ID が正規表現に一致するかを確認。
logseverity 最後のログエントリのログ重要度。
logsource 最後のログエントリのログソースが正規表現に一致するかを確認。
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/system.uptime)<0 #system uptime change has been negative since the last value (indicating a reboot)
change(/host/system.cpu.load[all,avg1])>2 #CPU load (for one minute) has jumped by more than 2 since the last value
change(/host/vfs.fs.size[/,free])<-1G #free disk space has dropped by more than 1 GB between checks
changecount(/host/key,(sec|#num)<:time shift>,<mode>)

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

パラメータ:

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

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

例:

changecount(/host/icmpping,10m)>5 #ping status has changed more than 5 times in 10 minutes
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 #operational state of eth0 has changed more than 5 times in an hour
changecount(/host/proc.num[httpd],15m)>10 #the number of httpd processes has changed more than 10 times in 15 minutes
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 の精度で一致判定されます。
  • integer 値では、like は operator としてサポートされません。
  • float 値では、like および bitand は operator としてサポートされません。
  • string、text、log 値では、eqnelikeregexpiregexp の各 operator のみがサポートされます。
  • operator に bitand を使用する場合、4 番目の pattern パラメータは number_to_compare_with/mask の形式で、'/' で区切られた 2 つの数値として指定できます。 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 server が使用)の違いにより、4 桁目の小数に影響する場合があることにも注意してください。

例:

count(/host/icmpping,30m,,"0")>5 #ping has failed more than 5 times in 30 minutes
count(/host/key,10m,"like","error") #the number of values for the last 10 minutes until now that contain 'error'
count(/host/key,10m,,12) #the number of values for the last 10 minutes until now that equal '12'
count(/host/key,10m,"gt",12) #the number of values for the last 10 minutes until now that are over '12'
count(/host/key,#10,"gt",12) #the number of values within the last 10 values until now that are over '12'
count(/host/key,10m:now-1d,"gt",12) #the number of values between 24 hours and 10 minutes and 24 hours ago from now that were over '12'
count(/host/key,10m,"bitand","6/7") #the number of values for the last 10 minutes until now having '110' (in binary) in the 3 least significant bits
count(/host/key,10m:now-1d) #the number of values between 24 hours and 10 minutes and 24 hours ago from now
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 値では、likebitand は operator としてサポートされません。
  • string、text、log 値では、eqnelikeregexpiregexp の operator のみがサポートされます。
  • operator に 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 のみを指定できます('/' は不要)。
  • operator に regexp または iregexp を使用する場合、4番目の pattern パラメータには通常の正規表現、または グローバル('@' で始まる)正規表現を指定できます。 グローバル正規表現の場合、大文字・小文字の区別はグローバル正規表現の設定を継承します。 regexp 一致のために、float 値は常に '.' の後に小数点以下 4 桁で表現されます。 また、大きな数値では 10 進表現(データベースに保存)と 2 進表現(Zabbix server が使用)の違いにより、小数点以下 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>)

定義された評価期間内で一致する値を検索します。
サポートされる値の型: 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 Compatible Regular Expression (PCRE) 正規表現

コメント:

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

例:

find(/host/key,10m,"like","error") #現在までの直近10分間で 'error' を含む値を検索
find(/host/agent.version,,"like","beta")=1 #Zabbix エージェントがベータ版であり、アップグレードが必要
find(/host/log[/var/log/nginx/access.log],,"regexp"," 500 ")=1 #内部Webサーバーエラーが見つかった
first(/host/key,sec<:time shift>)

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

パラメータ:

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

例:

first(/host/key,1h) #現在までの直近1時間内で最も古い値を取得
fuzzytime(/host/key,sec)

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

パラメータ:

コメント:

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

例:

fuzzytime(/host/system.localtime,5m)=0 #クライアントのローカル時刻が Zabbixサーバー/プロキシの時刻と 5 分を超えて異なる
fuzzytime(/host/system.localtime,5m)=0 and nodata(/host/system.localtime,10m)=0 #クライアントのローカル時刻が Zabbixサーバー/プロキシの時刻と 5 分を超えて異なる(アイテムがデータ送信を停止していないことも確認)
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) #1つ前の値を取得
last(/host/key,#1) <> last(/host/key,#2) #最後の値と1つ前の値が異なる
logeventid(/host/key,<#num<:time shift>>,<pattern>)

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

パラメータ:

例:

logeventid(/host/eventlog[Security],,"4625")=1 #a log entry with ID matching "4625" (failed authentication) found
logeventid(/host/eventlog[System],,"6008|41")=1 #a log entry with ID matching "6008" or "41" found
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フィールドからログ重大度を取得します。

例:

logseverity(/host/log[/var/log/syslog],10m)>3 #a log entry with severity above "3" found
logseverity(/host/eventlog[System],10m)=4 #a log entry with severity equaling "Error" found
logsource(/host/key,<#num<:time shift>>,<pattern>)

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

パラメータ:

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

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

例:

logsource(/host/eventlog[Application],,"MSSQLSERVER")=1 #ソースが"MSSQLSERVER"に一致するログエントリが見つかった
logsource(/host/eventlog[System],,"Service Control Manager")=1 #ソースが"Service Control Manager"に一致するログエントリが見つかった
logsource(/host/eventlog[System],,"Service Control Manager")=1 and logeventid(/host/eventlog[System],,"7031")=1 #ソースが"Service Control Manager"に一致し、イベントIDが"7031"に一致するログエントリが見つかった
monodec(/host/key,(sec|#num)<:time shift>,<mode>)

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

パラメータ:

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

例:

monodec(/host/system.swap.size[all,free],60s) + monodec(/host2/system.swap.size[all,free],60s) + monodec(/host3/system.swap.size[all,free],60s) #空きスワップサイズの減少が発生したホスト数を計算
monodec(/host/proc.num[nginx],10m,"strict")=1 #nginxプロセス数が10分間にわたって単調に減少している
monoinc(/host/key,(sec|#num)<:time shift>,<mode>)

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

パラメータ:

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

例:

monoinc(/host/system.localtime,#3,"strict")=0 #the system local time has not been increasing consistently
monoinc(/host/vfs.dir.count[/mnt/data/logs],24h,"weak")=0 #trigger if the file count has stagnated over 24 hours (expected to grow)
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サーバー、プロキシ、エージェントの間に時刻のずれがある場合、この関数は正しく動作しない可能性があります。 関連項目: 時刻同期の要件

例:

nodata(/host/agent.ping,5m)=1 #Zabbixエージェントから5分間データを受信していない場合にトリガー
percentile(/host/key,(sec|#num)<:time shift>,percentage)

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

パラメータ:

  • 共通パラメータを参照してください
  • percentage - 0から100まで(両端を含む)の浮動小数点数。小数点以下は最大4桁まで指定できます

例:

percentile(/host/net.if.in[eth0,bytes],1h,95)>1000000 #1時間におけるネットワーク受信量(bytes/sec)の95パーセンタイル値がしきい値(例: 1 MB/s)を超えている
percentile(/host/system.cpu.util,5m,95)>80 #CPU使用率のユーザー時間パーセンテージの95パーセンタイル値が80を超えている
percentile(/host/icmppingsec[192.168.0.2],15m,95)>0.15 #ほとんどのレイテンシ測定値は150ミリ秒未満だが、高い側の裾(上位5%)は定常的な遅延を示している
percentile(/host/net.if.in[eth0,bytes],1h,50) #1時間の受信ネットワークトラフィックの50パーセンタイル値(中央値)を計算する。percentileは外れ値を考慮しないため、avg()(平均値)とは異なる結果になる
(percentile(/host/net.if.in[eth0,bytes],1h,50)+percentile(/host/net.if.in[eth0,bytes],1h,51))/2 #1時間において値の数が偶数の場合の正確な中央値を計算する
rate(/host/key,sec<:time shift>)

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

パラメータ:

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

例:

rate(/host/key,30s) #30秒間の単調増加量が20の場合、この関数は0.67を返します。
rate(/host/net.if.in[eth0,bytes],5m)>500000 #過去5分間における eth0 の受信インターフェーストラフィックのレートが 500 KB/s を超えています
rate(/host/app.requests.count,1m)>100 #直近1分間で、リクエスト数カウンターが1秒あたり100リクエストを超えて増加しています

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