5 トレンド関数

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

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

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

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

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

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

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

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

Function Description
baselinedev 直近のデータ期間と、先行するシーズン内の同じデータ期間との間の偏差数(stddevpopアルゴリズムによる)を返します。
baselinewma 加重移動平均アルゴリズムを使用して、複数の等しい期間(「シーズン」)における同じ時間枠のデータを平均化し、ベースラインを計算します。
trendavg 定義された期間内のトレンド値の平均。
trendcount 定義された期間内のトレンド値の計算に使用された、正常に取得された履歴値の数。
trendmax 定義された期間内のトレンド値の最大値。
trendmin 定義された期間内のトレンド値の最小値。
trendstl 検出期間中の異常の割合を返します。0から1の間の10進値で、((異常値の数)/(値の総数)) です。
trendsum 定義された期間内のトレンド値の合計。
共通パラメータ
  • /host/key は共通の必須の第1パラメータです
  • 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) #前日と、過去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(年)で、season 以下でなければなりません
    Time shift - 時間期間のオフセットで、シーズン単位でのデータ収集時間枠の終了位置を定義します(例を参照)
  • season unit - 1つのシーズンを定義するカレンダー単位(h、d、w、M、y)。data period より小さくすることはできません
  • num seasons - 評価するシーズン数

例:

baselinewma(/host/key,1h:now/h,"d",3) #昨日で終了する直近3つの完全な日について、同じ時刻帯のベースラインを計算します。"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か月について、'yesterday' と同じ月内日付のベースラインを計算します。必要な日付が存在しない場合は、その月の最終日が使用されます。今日が 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時間前の1時間の平均(11:00-12:00)
trendavg(/host/key,1h:now/h-2h) #3時間前の1時間の平均(10:00-11:00)
trendavg(/host/key,1M:now/M-1y) #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 の間の10進数で、((異常値の数)/(値の総数)) です。

パラメータ:

  • 共通パラメータを参照してください
  • 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 - 繰り返しパターン(「季節性」)が想定される最短の期間(最小 '2h'、eval period より長くすることはできません。また、eval period 内のエントリ数は、結果として得られる頻度(season/h)の2倍より大きくなければなりません)。<N><time unit> の形式で定義します。ここで
    N - 時間単位の数
    time unit - h(時間)、d(日)、w(週)
  • deviations - 異常として数える偏差の数(devalg によって計算、小数可)(1以上である必要があります。デフォルトは 3)
  • devalg(二重引用符で囲む必要があります) - 偏差アルゴリズム。stddevpopstddevsamp、または mad(デフォルト)を指定できます
  • s window - 季節成分抽出のための loess ウィンドウのスパン(ラグ数単位)(デフォルトは 10 * eval period 内のエントリ数 + 1)

例:

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

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