2025/07/10 に NRQL Predictions (予測) 機能および予測機能を利用した予測アラート機能がリリース予定です。

NRQL Predictions は、NRQL クエリで PREDICT 句を追加することで、過去のデータを用いた将来の傾向を予測として表示することができます。
また、同予測機能はアラートオプションにも利用することができ、予測にもとづくアラート通知を受け取ることができます。

本ブログでは、ドキュメントの補足として、利用方法や実際のアラート通知の内容をご紹介します。

NRQL Predictions
Predictive alerts

利用するために

NRQL Predictions 機能をご利用するためには、Advanced Compute SKU 契約が必要となりますが、リリース (2025/07/10) までは Public Preview として、Advanced Compute SKU 契約の有無にかかわらず、お試しいただくことが可能です。

リリース後は Advanced Compute SKU で利用可能になり、Predictions 機能に依存する機能の使用は、月間使用量に加算されます。

コンピューティングベースの価格モデルをご利用でないお客様は、今後この機能をご利用いただくために、契約に Advanced Compute SKU を追加する必要がございます。

NRQL Predictions

NRQL リファレンス > Predict 句

NRQL での Predict 句は、TIMESERIES (時系列チャート) で利用でき、テキストデータでは利用ができません。
また、SELECT 句に使用できる項目は 1つで、COMPARE WITH 句 (別の時間帯のデータとの比較) ネストクエリが句利用されている場合や サブクエリ内のクエリでは使用ができません。

下記のオプションを利用できます。

  • 予測チャート期間を指定できる BY オプション
  • 学習データに利用する期間を指定できる USING オプション
  • Holt-Winters オプションにより 平滑化パラメータ (レベル、トレンド、季節性、季節周期および減衰係数) の調整が可能です
    • 時系列データの予測手法で、ベースの予測値に増減に関する傾向や季節性 (周期性) を考慮して期待値を算出します

Holt-Winters オプションとありますので、数理的な手法によって、予測値を算出しています。
対象の時系列データを用いた予測 (他の事象やリソースデータなどは考慮されない) 値であるため、過去データから予測できない突発的な変化などは予測できません。

NRQL Predictions を試してみた

Infra Host のリソースページにあるプリセット (CPU usage) のメニューには Predict trend が追加されており、PREDICT 句が付いた NRQL が実行される。

Infrastructure > (Selected Hosts) > Summary

NRQL としては、通常の時系列チャート (TIMESERIES) に PREDICT が追加されただけですが、実行結果には予測ラインが灰色背景部分に破線として追加されて表示されます (実測値は実線)。

NRQL with Predict clause

予測期間は BY オプションで制御が可能で、デフォルトでは実データ期間の時刻範囲 (SINCE/UNTIL) の 20% が予測期間として表示されます。
上記の CPU チャートでは SINCE 1 hour ago (実データ期間は 1 時間) で、予測期間はその 20% で 12分が表示されている (チャートの全時刻期間は 72分)。

予測期間の時間幅 (バケットサイズ) は TIMESERIES 句の時間幅と一緒となります。
また、TIMESERIES 句のバケット数は 366個までという制限が予測期間を含めた期間で適用されます。

上記の 72分期間 (実データ 60分、予測 12分) のチャートで TIMESERIES MAX を指定した場合は、バケットサイズは (72分/366 = 11.8..秒、切り上げられて) 12秒 で表示されます。

また、TIMESERIES 1 minute として場合は、全体で 366分の時間幅のチャートまで表示できるため、 (実データ期間は 60 分 の場合) 予測領域は 306分まで表示することができます。

NRQL Predict clause with by option

次に Transaction の duration データを利用して 季節性変動 (seasonality)の効果を確認してみましょう。

実データではおおよそ 1日に1度程度スパイクが発生するようなパターンがみられます。
ここでは違いが明確となったパターンを紹介します。

  • 季節性変動 なし の場合

    • 明示的に seasonality オプションで None を指定します
    • 結果は、実データにあるようなスパイクは、全く予測されませんでした
  • 季節性変動 3時間 の場合

    • seasonality オプションで 3 hours を指定します
    • 3時間周期のデータであるというインプットとなり、実際のデータよりも小さなスパイクと予測されました
  • 季節性変動 1日の場合

    • seasonality オプションで 1 day を指定します
    • 実際のデータと同じ1日の周期のデータであるというインプットで、実際のデータにあるようなスパイクがきちんと予測されました
  • 季節性変動 30時間の場合

    • seasonality オプションで 30 hours を指定します
    • 30時間周期のデータであるというインプットを与えたことになります、3時間データと同じように実際の周期とあっていないため、あまり綺麗には予測Sれませんでした
  • 季節性変動オプション未指定 (デフォルト) または AUTO の場合

    • seasonality オプションを未指定 または seasonality オプション で AUTO を指定します
    • デフォルト動作では季節性変動を自動で検出します。このチャートでは seasonality オプションで 1 day を指定したチャートと同じように、スパイクがきちんと予測されました
    • デフォルト動作において、周期性を検出されなかった場合は、なし として予測されます

基本的には自動検出されるので、未指定で十分なように思います。
対象データの周期がわかっているのであれば、季節性変動パラメータを指定するのもよいと思います、ただ、実際の周期と合致していない場合 (適切なインプットになっていないため) 予測の精度は落ちます。

季節性変動 オプション (seasonality): None

季節性変動 オプション (seasonality): 3時間

季節性変動 オプション (seasonality): 1日

季節性変動 オプション (seasonality): 30時間

季節性変動 オプション (seasonality): 未指定 (自動検出)

Predictive Alert

アラートコンディションの編集 > 閾値設定ページ (Set thresholds) にて Predict オプション (Predict future behavior スライド) を有効化することで予測アラートを設定することができます。

同オプションは Static 閾値 のみで利用可能で、Anomaly 閾値 (ベースライン) では利用いただけません。

Predict に関する設定項目は下記の 2つ

  • 予測時間 (先読み時間, look ahead)
    • 予測値時間は Window Duration の 2倍 から 360倍までの時間が設定可能です
  • 実シグナルが閾値違反となった場合に予測インシデントをクローズするか、それとも残しておくか
    • Close predicted alert event and open one for the occurring event. (予測インシデントは閉じられ、実インシデントが新規で作成される
    • Keep predicted alert event open instead of opening a new one. (予測インシデントは Open のまま。実インシデントが作成されない)

NRQL の Predict 句ほど細かな指定オプションはありません。
季節性変動は自動検出となり、また変動周期は Window Duration 期間で自動選択されます。

  • Window Duration が 30秒 ~ 2分 の場合、変動周期は 時間単位、必要な学習データ 3時間
  • Window Duration が 2分 ~ 10分 の場合、変動周期は 時間単位または日次単位、必要な学習データ 3時間、3日
  • Window Duration が 10分 ~ 1時間 の場合、変動周期は 時間単位、日次単位、週次単位、必要な学習データ 3時間、3日、3週間
  • Window Duration が 1時間 ~ 6時間 の場合、変動周期は 日次単位または週次担任、必要な学習データ 3日、3週間

Predictive Alert を試してみた

徐々にディスク使用率が増加しているホストにて、予測アラートを下記で設定しました。

SELECT average(diskUsedPercent) FROM StorageSample FACET entityName, mountPoint WHERE entityName = '対象ホスト'

Window Duration: 1分
Event flow (遅延: 30秒)
静的閾値 (Critical): result > 40 for at least 5分
予測 (先読み): 1時間 (Keep)
インシデント期日: 12時間

そして、予測値が閾値を 5分連続で超過したタイミングで予測インシデントが作成されました。

下記は インシデントイベントでのクエリ結果です。 予測インシデントが作成されたのが 3:29 でした。
3:27 - 3:28 ウィンドウが集計処理された際の予測値において、4:15 に閾値 40 を超過し始め、4:20 に 閾値超過が 5分継続したため、閾値違反と判定されました。
(DegradationTime: 超過し始めた時刻 (劣化時間), OpenTIme: 閾値期間の条件を満たした時刻)

release-nrqlpredictions-NrAiIncident.Keep

Predict Alert Incident (NrAiIncident event)

アラートメールの文面は通常の通知文面と同じものとなります。
先の NrAiIncident イベントで確認したように Issue タイトル (インシデントタイトル) に 'Predict' が追加されています。

release-nrqlpredictions-PredictiveAlertNotification

Predict アラートの eMail 通知の内容

New Relic Now 新しいAgentic Integrationsのデモを6月24日に実施
ご登録ください