NRQL クエリを使ったアラート条件の作成

New Relic Insights では、SQL ライクな NRQL クエリを使って、イベントデータを分析、可視化することができます。New Relic Alerts から、数値を返す Insights の 基本的な NRQL クエリを監視できます。アカウントあたり、最大 2000 NRQL 条件となります。

サポートしている NRQL 構文

以下は、数値を返す基本的な NRQL クエリの基本的な構文とサポートされている関数です。

SELECT function(attribute)
FROM Event
WHERE attribute [comparison] [AND|OR ...]
説明
SELECT function(attribute)

必須

利用可能な数値を返す関数。

  • apdex
  • average
  • count
  • latest
  • max
  • min
  • percentage
  • percentile
  • sum
  • uniqueCount
FROM Event

必須

イベントを 1つのみ指定できます。
WHERE attribute [comparison] [AND|OR ...]

任意

WHERE 句を使うと、1つ以上の一連の条件を指定できます。すべての演算子がサポートされています。

NRQL アラート条件の作成

アカウントあたり、最大 2000 NRQL 条件となります。

NRQL クエリを使ったアラート条件を作成する手順は以下の通りです。

  1. 基本的なワークフローに従って、ポリシーを準備します。
  2. 条件作成時 (手順2)に、対象製品として、NRQL を選択します。
  3. 条件のタイプとして、Query を選択します。
  4. 数値を返す 基本的な NRQL クエリを作成します。
  5. オプション: 時系列のクエリ結果を表示したい場合は、View timeseries in Insights を押します。
  6. 閾値を定義します。推奨: 特にアプリが複数のホストで実行されている場合は、期間を 3 分 以上前の時間を選択してください。
  7. 明確でわかりやすい条件名をつけます。
  8. 残りのポリシーのワークフロー (手順 5)を続けます。

クエリ時間枠のオフセット

1分ごとに New Relic Alerts は1分間の枠に対して、NRQL クエリを評価します。開始時間は、Evaluate query data from X min ago の閾値設定で選択した値によって異なります。例:

閾値の設定

Evaluate query from 3 mins ago

クエリに適用される NRQL の時間枠

SINCE 3 min ago UNTIL 2 min ago

イベントタイプのソースが New Relic の言語エージェントで多くのアプリケーションインスタンス(Transactions, TransactionErrors など)から集約されている場合、New Relic では過去3分以上の期間のデータについて評価することを推奨しています。期間を3分以上にしない場合、違反のトリガーはより早く引かれますが、同時に誤検知の数も増えることがあります。

カスタムイベントのタイプは、エージェントの収穫サイクルの影響を受けません。そのため、より効果的に毎分評価されます。

以下は、NRQL アラートのユースケースです。

データを特定のセグメントでアラート
重要な顧客や一定区間のデータなど、データの特定のセグメントを対象とした制約付きアラートを作成します。WHERE 句を使って、条件を定義します。

SELECT average(duration) FROM Transaction WHERE account_id in (91290, 102021, 20230)
SELECT percentile(duration, 75) FROM Transaction WHERE name LIKE 'Controller/checkout/%'
データのN番目のパーセンタイルでアラート
N番目のパーセンタイルのデータが閾値に達した場合に、アラートを作成します。たとえば、SLA サービスレベルの管理などで役に立ちます。

SELECT percentile(duration, 95) FROM Transaction
SELECT percentile(databaseDuration, 75) FROM Transaction
データの最大、最小、平均でアラート
データがある最大値、最小値、平均値に達したときにアラートを作成します。たとえば、処理時間やレスポンスタイムが一定の閾値を超えないようにすることができます。

SELECT max(duration) FROM Transaction
SELECT average(duration) FROM Transaction
データのパーセンテージでアラート
データのある割合がある閾値を上回ったり下回ったりしたときアラートを作成します。

SELECT percentage(count(*), WHERE duration > 2) FROM Transaction
SELECT percentage(count(*), WHERE httpResponseCode = '500') FROM Transaction
T値の Apdex でアラート
トランザクションがある閾値 T を適用した Apdex でアラートを作成します。たとえば、本番環境のアプリのトランザクションのうち、500 ミリ秒のT値を閾値とした Apdex スコアが 0.8 未満になった場合に、アラート通知を受け取ることができます。

SELECT apdex(duration, t:0.5) FROM Transaction WHERE appName like '%prod%'

関連情報

関連する情報は以下のとおりです。

  • New Relic Alerts (New Relic Alerts を使って、各自の組織に適したアラートソリューションを組み立てる方法についての概要)
  • アラートポリシーのワークフロー (New Relic Alerts におけるポリシー、条件、チャネルの関係性について。そして、ロールと権限について。)
  • アラートポリシーのベストプラクティス (New Relic Alerts を使って、アラートをトリガーするタイミング、アラートを受け取る対象、受け取るアラートを定義する方法の例)
  • アラート条件の定義 (製品とメトリックタイプ、そしてサービスを起点として、Alert conditions ページで、New Relic Alerts においてアラートポリシーをトリガーするものを特定する方法)