概要
NRQL predictions New Relicは、時系列の履歴データ パターンを使用して将来の傾向を予測または予測し、メトリクスが将来どのように動作するかをサイトに提供します。 このプロアクティブなアプローチにより、傾向を視覚化して潜在的な問題を予測し、タイムリーな介入によって最適なシステム パフォーマンスを維持できるようになります。シグナルの予測は、機械学習モデルを履歴データに適合させ、そのモデルを使用して将来を予測することによって生成されます。この機能は現在、季節性(一定のリズムで繰り返されるパターンを持つデータ)と非季節性の両方の時系列の予測をサポートしています。強い傾向や明確な季節パターンを示すメトリクスは、予測に最適です。 これらの予測は、メトリクスがどこに向かっているのかを簡単に視覚的に示すために、既存のダッシュボードに追加すると最もよく活用されます。

時系列に対してNRQL predictions ( PREDICT
句) を使用して行われた予測。この例では、 BY
キーワードに基づいて、1 日先の予測が生成されます。これらの予測を生成するモデルは、クエリ ウィンドウからの 3 日間とUSING
キーワードからの 2 週間 (14 日間) の合計 17 日間のデータでトレーニングされます。チャートにはすべてのトレーニング データが表示されないことに注意してください。
チャートやダッシュボードに予測を追加する場合の例:
- 過去数時間にわたってアプリケーションがより多くのログを生成しており、ディスク容量が不足しています。
- アプリケーションのメモリが徐々に不足し、コンテナ全体がクラッシュする恐れがあります。
- 観察された季節や傾向のパターンに基づいて将来の収益を予測する必要があります。
NRQL predictions自体は潜在的な問題を特定しませんが、傾向を評価し、将来の課題に備えるために必要な情報を提供します。予測値が差し迫った問題を示している場合にアラートを生成するには、 Predictive Alerts機能を使用できます。Predictive Alerts 、 NRQL predictionsと連携して、メトリクスとその予測値が静的閾値を超えた場合の集計の予測を生成します。
価格
NRQL predictionsは、アドオンまたは計算価格モデルの一部として提供される高度な計算製品機能です。 この機能に対して NRQL クエリが実行されるときに、高度なCCU が消費されます。
使用方法
NRQL predictions すでに作成したチャート上で直接生成するか、 PREDICT
句を使用して NRQL クエリを記述するかの 2 つの方法で生成できます。
NRQL predictions 、折れ線グラフや面グラフなどの時系列データを表すグラフにのみ追加できます。既存のチャートにNRQL predictionを追加するには、次の手順を実行します。
予測を追加する
ダッシュボードのチャートに予測を追加するには、 メニューで、 Predict trendを選択します。Predict trendオプションは、特定のサービス向けに設計されたシステム生成の編集不可能なダッシュボードであるキュレーションされたダッシュボード内のグラフでは使用できません。だから、 メニューで、 View Queryを選択し、クエリにPREDICT
句を追加します。
データ エクスプローラーでは、予測はグラフ上で灰色の領域で強調表示され、予測値が破線で接続され、 NRQL predictionsデフォルトの動作を表します。要件に応じて微調整してクエリを絞り込み、再実行して更新された予測を取得できます。
ヒント
面グラフに予測を追加すると、予測を含む折れ線グラフに変わります。
ダッシュボードに追加
予測を含むグラフをダッシュボードに追加するには:
- Add to dashboardをクリックします。
- ウィジェット名を入力します。
- 既存のダッシュボードを選択するか、新しいダッシュボードを作成します。
NRQL 構文には、 NRQL predictionsの使用を効率化するためのPREDICT
句が含まれています。使用方法の詳細と例については、デフォルトの動作のセクションを参照してください。
NRQL クエリでPREDICT
使用する例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT
チャート上のデフォルトの予測は次のように表示されます。

one.newrelic.com > All capabilities > dashboards: デフォルトの予測。
デフォルトの動作
重要
デフォルトのPREDICT
句を使用すると、最適な予測結果が得られます。
クエリ内のPREDICT
句には、クエリ ウィンドウの期間 ( SINCE
句とUNTIL
句を使用して指定) に応じて次のデフォルトの動作があります。
Default behavior |
---|
季節性 | 履歴データに季節性があるかどうかを自動的に検出します。季節性が検出された場合は、識別された季節の長さを使用して季節モデルが生成され、それ以外の場合は非季節モデルが使用されます。現在、季節の長さは時間単位、日単位、週単位をサポートしています。季節性の詳細については、アルゴリズムのセクションを参照してください。 |
アルゴリズムのハイパーパラメータ | ハイパーパラメータは履歴データに基づいて自動的に最適化および選択されます。 |
トレーニング用の履歴データの量 | 過去 3 つのクエリ ウィンドウ (現在のウィンドウとその前の 2 つ) の履歴データを使用します。たとえば、クエリ ウィンドウの長さが 1 時間の場合、トレーニングには合計 3 時間が使用されます。グラフには、トレーニング データ全体ではなく、現在のクエリ ウィンドウのデータのみが表示されます。 - クエリ ウィンドウには特定の時間の長さのみを表示し、トレーニングにはより多くのデータを使用する場合は、
USING 句を使用できます。 - デフォルト以外の季節性を指定した場合、使用されるトレーニング データの量が異なります。詳細は季節のセクションを参照してください。
|
予測ウィンドウ | クエリ ウィンドウで指定された合計時間範囲の 20% に等しい範囲を予測します。たとえば、クエリ ウィンドウが 1 時間の場合、予測は次の 12 分間になります。このデフォルトはBY 句で上書きできます。 |
クエリの例と、 PREDICT
を使用した場合に期待される出力は次のとおりです。
Example 1:
FROM Transaction SELECT sum(currentWorkerCount) TIMESERIES PREDICT
デフォルトのクエリ ウィンドウが 1 時間で、次の 12 分間の予測を含む時系列チャートを返します。トレーニングには合計 3 時間の履歴データが使用されます (クエリ ウィンドウからの 1 時間とその前の 2 つのクエリ ウィンドウからの 2 時間)。

例1
Example 2:
FROM Transaction SELECT sum(currentWorkerCount) TIMESERIES SINCE 3 hours ago UNTIL 1 hour ago PREDICT
2 時間のクエリ ウィンドウ ( SINCE
とUNTIL
句に基づく) と次の 24 分間の予測を含む時系列チャートを返します。トレーニングには合計 6 時間の履歴データが使用されます (クエリ ウィンドウからの 2 時間とその前の 2 つのクエリ ウィンドウからの 4 時間)。

例2
BY
、 USING
、および SLIDE BY
モデルの季節性を手動で設定し、 BY
、 USING
、 SLIDE BY
キーワードを追加することで、予測をカスタマイズできます。
BY
キーワードを使用して、モデルでどのくらい先の時間を予測するかを設定します。たとえば、 PREDICT BY 3 hours
時系列の最新時点から最大 3 時間先までの予測を生成します。時間範囲がinteger unit
であることを確認してください。予測できる最大量は 360 個の時間ウィンドウ (つまり、時系列ウィンドウのサイズ × 360) です。
今後 30 分間の予測を生成するBY
キーワードを使用したクエリの例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT BY 30 minutes
![[object Object] Example with BY](/images/nrql-prediction-example-by.webp)
<><InlineCode>BY</InlineCode> キーワードを使用して行われた予測の例。枠で囲まれた領域は、<InlineCode>BY</InlineCode> キーワードによって影響を受けるグラフのセクションを示します。</>
モデルのトレーニングに使用する履歴データの量を指定するには、 USING
キーワードを使用します。使用されるデータの合計量は、クエリ ウィンドウの期間 ( SINCE
とUNTIL
句で指定) とUSING
句で指定された値の合計です。たとえば、 PREDICT USING 1 day
クエリ ウィンドウと前日のデータを使用してモデルをトレーニングします。時間範囲がinteger unit
であることを確認してください。
最大 3,660 個のデータ ポイントを使用してモデルをトレーニングできます。この制限を超えると、エラー メッセージが表示されます。 時系列ウィンドウを使用すると、これがどのくらいの時間を表すかを判断できます。たとえば、1 分間の時間ウィンドウでは、最大 3,660 分のトレーニング データを使用できます。これは、61 時間、つまり約 2.5 日に相当します。
USING
キーワードとSINCE
を使用したクエリの例:
FROM Transaction SELECT sum(currentWorkerCount) SINCE 1 week ago TIMESERIES MAX PREDICT USING 2 weeks
![[object Object] Example with USING](/images/nrql-prediction-example-using.webp)
<><InlineCode>USING</InlineCode> キーワードを使用して行われた予測の例。<InlineCode>USING</InlineCode> キーワードは、チャートに視覚化されないトレーニングに使用されるデータの量に影響します。</>
予測が短期間で大きな変動を示す場合は、 SLIDE BY
キーワードを使用してデータ内のノイズを削減します。この句は、指定されたスライド間隔で重複する時間ウィンドウにデータを集約し、グラフの急上昇を平滑化して、傾向を特定しやすくします。
SLIDE BY
キーワードを使用したクエリの例:
FROM Transaction SELECT count(*) PREDICT TIMESERIES 5 minutes SLIDE BY 1 minute
アルゴリズム
現在、 NRQL predictions季節性時系列と非季節性時系列の両方に対して、指数平滑法とも呼ばれるHolt-Wintersアルゴリズムをサポートしています。これは、予測や時系列予測に一般的に使用される標準アルゴリズムです。
季節を問わず
季節性のない時系列の場合、レベル (平均値) と傾向 (平均増加または減少) のみがモデル化されます。季節性のない予測は直線的であるため、傾向の有無にかかわらず平坦な線が予想されます。

季節性のない時系列に対してNRQL predictionsを使用して生成された予測。
季節限定
季節時系列の場合、レベルとトレンドに加えて季節パターンも含まれます。季節性は、ある周期的に発生する繰り返し可能なパターンを表します。Holt-Winters モデルでは、デフォルトで時間別、日別、週別の季節の長さの自動検出をサポートしています。それぞれの季節の長さを検出するには、クエリ ウィンドウの期間 ( SINCE
句とUNTIL
句を使用して指定) とUSING
句の組み合わせを通じて十分なデータを提供していることを確認する必要があります。季節の長さごとに必要な最小データ量は以下に指定されています。デフォルトでは、 USING
句が使用されていない場合、 NRQL predictionsクエリ ウィンドウの 3 倍を使用して予測を生成します。
Detectable seasonalities | Description | Minimum amount of required data |
---|
時間単位 | 時間内の各タイムスタンプは、前の時間と同じように動作します。たとえば、午後 3:20 は、午後 2:20、午後 1:20 などと同じように動作します。 | 2時間 |
毎日 | 各時間は前日の時間と同じように動作します。たとえば、今日の午後 3 時は、昨日の午後 3 時と同じように動作します。 | 2日間 |
週刊 | それぞれの曜日は、前の週と同じように動作します。たとえば、今週の月曜日は、前の週の月曜日と同じように動作します。 | 2週間 |
seasonality
を使用してカスタムの季節の長さを指定できます。

週ごとの季節性を持つ時系列に対してNRQL predictionsを使用して生成された予測。
現在、Holt-Winters の非季節バージョンと季節バージョンを使用した予測をサポートしています。カスタムの季節性を設定するには、 PREDICT
句にholtwinters(seasonality: <value>)
使用します。
Option | Description |
---|
<season length>
| 指定された季節の長さを持つ季節モデルを予測に使用することを指定します。季節の長さは、単一の季節期間の長さを表す時間のinteger unit (つまり、 1 day または3 hours ) である必要があります。たとえば、値1 hour は時間単位の季節性、値1 day は日単位の季節性、 1 week は週単位の季節性に相当します。 |
AUTO
| 自動季節検出を使用します。トレーニング ウィンドウ内の履歴データを分析して、非季節性モデルと季節性モデルの両方に適合させます。季節モデルの季節の長さは、トレーニング ウィンドウで検出された最も強い季節性に基づいて選択されます。両方のモデルがトレーニングされた後、最も適合するモデルが選択され、予測に使用されます。 |
NONE
| 非季節モデルを使用することを指定します。 |
重要
シーズンの長さが指定され、 USING
句が使用されている場合、トレーニングに使用されるデータの量は、クエリ ウィンドウにUSING
量を加えた量と等しくなります。USING
が指定されていない場合は、季節の長さとクエリ ウィンドウの 3 倍の最大値が使用されます。
ユーザーが指定した季節性を含むクエリの例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT holtwinters(seasonality: 1 hour)
非季節モデルを指定するクエリの例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT holtwinters(seasonality: NONE)
自動季節検出を指定する例 (これは、 holtwinters(...)
を使用しないデフォルトと同じ動作です):
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT holtwinters(seasonality: AUTO)
高度な使用法
重要
モデルの調整は、モデルをきめ細かく制御したい上級ユーザーや、予測アラートで生成された予測を再作成することを目的としています。
現在、 Holt-Wintersは唯一サポートされている予測アルゴリズムであり、予測を微調整するために調整できるハイパーパラメータがいくつかあります。ハイパーパラメータは、クエリのPREDICT
句の後にholtwinters(<hyperparameter>: <value>)
を追加することで変更できます。次の懸念の任意の組み合わせを追加して、モデルを履歴データにどのように適合させるかを変更できます。
Hyperparameter | Description | Allowed values |
---|
alpha
| レベル平滑化係数。値が大きいほど、最近の値に重みが与えられます。 | [0, 1.0]
|
beta
| 値が大きいほど最近の値に重みが増す傾向平滑化係数。 | [0, 1.0]
|
gamma
| 季節平滑化係数。値が大きいほど最近の値に重みが増します。この問題は非季節モデルと互換性がなく、 holtwinters(seasonality: NONE, gamma: <value>) を指定しようとするとエラーが返されます。 | [0, 1.0]
|
phi
| トレンドの減衰 値が小さいほど、トレンドの減衰が大きく、平坦化すると予測されます。 | [0, 1.0]
( [0.98, 1.0] )の範囲内の値のみを使用することをお勧めします。 |
ハイパーパラメータを変更したクエリの例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT holtwinters(alpha: 0.2, beta: 0.5, gamma: 0.5, phi: 0.99)
季節性、カスタムハイパーパラメータを指定し、 BY
およびUSING
キーワードを追加したPREDICT
句を含むクエリの例:
FROM Transaction SELECT count(*) WHERE error IS TRUE TIMESERIES PREDICT holtwinters(seasonality: AUTO, alpha: 0.2) BY 1 hour USING 2 hours
このクエリは季節性を自動検出に設定し、レベル平滑化係数を調整して履歴データを強調します。今後 1 時間を予測し、クエリ ウィンドウの長さと過去 2 時間の履歴データを使用してモデルをトレーニングします。チャートには、次のようにカスタマイズされた予測が表示されます。

one.newrelic.com > All capabilities > dashboards: カスタマイズされた予測。