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.

5 トレンド関数

トレンド関数は、ヒストリ関数とは対照的に、計算にトレンドデータを使用します。

トレンドは1時間ごとの集計値を保存します。トレンド関数はこれらの1時間ごとの平均値を使用するため、長期的な分析に役立ちます。

トレンド関数の結果はキャッシュされるため、同じパラメータで同じ関数を複数回呼び出しても、データベースからの情報取得は1回だけです。トレンド関数のキャッシュは、TrendFunctionCacheSizeサーバーパラメータで制御されます。

トレンド関数のみを参照するトリガーは、式内の最小の時間間隔ごとに1回評価されます。たとえば、次のようなトリガーの場合

trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2

は1日ごとに評価されます。トリガーにトレンド関数とヒストリ関数(または日付と時刻nodata())の両方が含まれている場合は、通常の原則に従って計算されます。

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

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

関数 説明
baselinedev 直近のデータ期間と前のシーズンの同じデータ期間との間の偏差数(stddevpopアルゴリズムによる)を返します。
baselinewma 加重移動平均アルゴリズムを使用して、複数の等しい期間(「シーズン」)の同じ時間枠のデータを平均化することでベースラインを計算します。
trendavg 指定した期間内のトレンド値の平均。
trendcount 指定した期間内のトレンド値の計算に使用された正常に取得されたヒストリ値の数。
trendmax 指定した期間内のトレンド値の最大値。
trendmin 指定した期間内のトレンド値の最小値。
trendstl 検出期間中の異常値の割合を返します。これは0から1の間の小数値で、((異常値の数)/(値の総数))です。
trendsum 指定した期間内のトレンド値の合計。
共通パラメータ
  • /host/keyは共通の必須の最初のパラメータです
  • time period:time shiftは共通の2番目のパラメータで、以下のようになります:
    • time period - 期間(最小値は'1h')、<N><time unit>で定義されます。Nは時間単位の数、time unitはh(時間)、d(日)、w(週)、M(月)、y(年)です。
    • time shift - 期間のオフセット(関数の例を参照)

関数の詳細

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

  • 関数パラメータはカンマで区切ります
  • オプションの関数パラメータ(またはパラメータの一部)は < >で示されます
  • 関数固有のパラメータは各関数で説明されています
  • /host/key および time period:time shift パラメータは 決して引用符で囲まないでください
baselinedev(/host/key,data period:time shift,season unit,num seasons)

直近のデータ期間と、過去のシーズンの同じデータ期間との間の偏差の数 (stddevpopアルゴリズムによる) を返します。

パラメータ:

  • 共通パラメータを参照;
  • data period - シーズン内のデータ収集期間。<N><time unit>で定義されます。
    N - 時間単位の数
    time unit - h (時間), d (日), w (週), M (月), y (年)。season以下でなければなりません。
  • season unit - 1シーズンの期間 (h, d, w, M, y)。data periodより小さくできません。
  • num seasons - 評価するシーズン数。

例:

baselinedev(/host/key,1d:now/d,"M",6) #直近1日と、過去6ヶ月の同じ日との標準偏差(母集団)の数を計算します。前月に日付が存在しない場合は、その月の最終日が使用されます(7月31日は1月31日、2月28日、... 6月30日と比較されます)
       baselinedev(/host/key,1h:now/h,"d",10)  #直近1時間と、昨日までの10日間の同じ時間との標準偏差(母集団)の数を計算します
baselinewma(/host/key,data period:time shift,season unit,num seasons)

重み付き移動平均アルゴリズムを使用して、複数の等しい期間(「シーズン」)の同じ時間枠からデータを平均化することでベースラインを計算します。

パラメータ:

  • 共通パラメータを参照;
  • data period - シーズン内でのデータ収集期間、<N><time unit>として定義されます。
    N - 時間単位の数
    time unit - h(時間)、d(日)、w(週)、M(月)、y(年)、シーズン以下でなければなりません
    Time shift - 期間のオフセット、シーズン内でのデータ収集期間の終了を定義します(例を参照);
  • season unit - 1シーズンの期間(h, d, w, M, y)、data periodより小さくできません;
  • num seasons - 評価するシーズンの数。

例:

baselinewma(/host/key,1h:now/h,"d",3) #昨日で終了した3日間の期間内の最後の1時間に基づいてベースラインを計算します。"now"が月曜日13:30の場合、金曜日、土曜日、日曜日の12:00-12:59のデータが分析されます
       baselinewma(/host/key,2h:now/h,"d",3) #昨日で終了した3日間の期間内の最後の2時間に基づいてベースラインを計算します。"now"が月曜日13:30の場合、金曜日、土曜日、日曜日の11:00-12:59のデータが分析されます
       baselinewma(/host/key,1d:now/d,"M",4) #直近の完全な月の前の4か月間で「昨日」と同じ月の日に基づいてベースラインを計算します。必要な日付が存在しない場合は、その月の最終日が使用されます。今日が9月1日の場合、7月31日、6月30日、5月31日、4月30日のデータが分析されます。
trendavg(/host/key,time period:time shift)

指定した期間内のトレンド値の平均。

パラメータ:

例:

trendavg(/host/key,1h:now/h) #直前1時間の平均 (例: 12:00-13:00)
       trendavg(/host/key,1h:now/h-1h) #2時間前の平均 (11:00-12:00)
       trendavg(/host/key,1h:now/h-2h) #3時間前の平均 (10:00-11:00)
       trendavg(/host/key,1M:now/M-1y) #1年前の直前1ヶ月の平均
trendcount(/host/key,time period:time shift)

定義された期間内にトレンド値を計算するために使用された、正常に取得された履歴値の数。

パラメータ:

例:

trendcount(/host/key,1h:now/h) #直前の1時間の値の数(例:12:00-13:00)
       trendcount(/host/key,1h:now/h-1h) #2時間前の値の数(11:00-12:00)
       trendcount(/host/key,1h:now/h-2h) #3時間前の値の数(10:00-11:00)
       trendcount(/host/key,1M:now/M-1y) #1年前の前月の値の数
trendmax(/host/key,time period:time shift)

定義された期間内のトレンド値の最大値。

パラメータ:

例:

trendmax(/host/key,1h:now/h) #直前の1時間の最大値(例:12:00-13:00)
       trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → 直前の1時間(12:00-13:00)の最大値と最小値の差分(トレンドデルタ)を計算
       trendmax(/host/key,1h:now/h-1h) #2時間前の最大値(11:00-12:00)
       trendmax(/host/key,1h:now/h-2h) #3時間前の最大値(10:00-11:00)
       trendmax(/host/key,1M:now/M-1y) #1年前の直前月の最大値
trendmin(/host/key,time period:time shift)

定義された期間内のトレンド値の最小値。

パラメータ:

例:

trendmin(/host/key,1h:now/h) #直前1時間の最小値(例: 12:00-13:00)
       trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → 直前1時間(12:00-13:00)の最大値と最小値の差分(トレンドデルタ)を計算
       trendmin(/host/key,1h:now/h-1h) #2時間前(11:00-12:00)の最小値
       trendmin(/host/key,1h:now/h-2h) #3時間前(10:00-11:00)の最小値
       trendmin(/host/key,1M:now/M-1y) #1年前の直前月の最小値
trendstl(/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s window>)

検出期間中の異常値の割合を返します。値は0から1の間の小数で、((異常値の数)/(値の総数))です。

パラメータ:

  • 共通パラメータを参照;
  • eval period - 分解する必要がある期間(最小 '1h')、<N><time unit> で定義
    N - 時間単位の数
    time unit - h (時間), d (日), w (週), M (月), y (年)
  • detection period - 異常値を計算するためのeval periodの終了前の期間(最小 '1h'、eval periodより長くできません)、<N><time unit> で定義
    N - 時間単位の数
    time unit - h (時間), d (日), w (週)
  • season - 繰り返しパターン("season")が予想される最短期間(最小 '2h'、eval periodより長くできません。eval period内のエントリ数は、得られる頻度(season/h)の2倍より大きくなければなりません)、<N><time unit> で定義
    N - 時間単位の数
    time unit - h (時間), d (日), w (週)
  • deviations - 異常値と見なす偏差(devalgで計算、少数可、1以上、デフォルトは3)
  • devalg(ダブルクォート必須) - 偏差アルゴリズム。stddevpopstddevsampmad(デフォルト)から選択
  • s window - 季節性抽出のためのloessウィンドウのスパン(ラグ数、デフォルトは"10 * eval period内のエントリ数 + 1")

例:

trendstl(/host/key,100h:now/h,10h,2h) #直近100時間のトレンドデータを分析し、その期間の直近10時間の異常率を求める。周期性は2hと仮定し、評価期間の残差系列値がその残差系列のMADの3偏差に達した場合に異常値と見なす
       trendstl(/host/key,100h:now/h-10h,100h,2h,2.1,"mad") #10時間前までの100時間のトレンドデータを分析し、その全期間の異常率を求める。周期性は2hと仮定し、評価期間の残差系列値がその残差系列のMADの2.1偏差に達した場合に異常値と見なす
       trendstl(/host/key,100d:now/d-1d,10d,1d,4,,10) #1日前までの100日間のトレンドデータを分析し、その期間の直近10日間の異常率を求める。周期性は1dと仮定し、評価期間の残差系列値がその残差系列のMADの4偏差に達した場合に異常値と見なす。季節性抽出のためのloessウィンドウのスパンをデフォルトの"10 * eval period内のエントリ数 + 1"から10ラグに上書き
       trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") #1年前の前月を分析し、その期間の最終日の異常率を求める。周期性は2hと仮定し、評価期間の残差系列値がその残差系列の標本標準偏差の3偏差に達した場合に異常値と見なす
trendsum(/host/key,time period:time shift)

指定した期間内のトレンド値の合計。

パラメータ:

例:

trendsum(/host/key,1h:now/h) #直前1時間の合計 (例: 12:00-13:00)
       trendsum(/host/key,1h:now/h-1h) #2時間前の合計 (11:00-12:00)
       trendsum(/host/key,1h:now/h-2h) #3時間前の合計 (10:00-11:00)
       trendsum(/host/key,1M:now/M-1y) #1年前の直前月の合計

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