NRQL について

New Relic のクエリ言語 (NRQL: New Relic Query Language)は、Insights のイベントデータベースに対して問い合わせを行うための SQL ライクなクエリ言語です。NRQL では、アプリが収集したデータや転送されたデータに対して問い合わせを行い、チャート形式で表示できます。そのチャートから、アプリのデータを様々な観点から見ることができるため、アプリに対してより深い分析をすることができます。

  • New Relic Insights に関する基本的な概念、事例、高度な使い方などの動画をご覧になりたい方は、 learn.newrelic.com をご覧ください。
  • New Relic APM や他の製品によって収集されたデータを、NRQL を使って、探索する例を知りたい方は、NRQL クエリの例をご覧ください。

クエリツールの使い方

crop-nrql-command-line
Insights > (クエリを実行する): Insigths クエリの実行後、望む結果となるように NRQL を調整します。十分な期待した結果の場合は、Add to this dashboard [ダッシュボードに追加]ボタンと Add to ボタンを使い、ダッシュボードに追加します。

コマンドラインのクエリツールは、ダッシュボードの上部と Query history [クエリの履歴]ページに表示されます。そこで、SQL ライクのクエリを作成します。入力すると、自動補完機能により、使用可能な属性 をリスト表示します。また、構文にエラーがある場合は、赤い下線を表示します。NRQL 構文についての詳しい情報は、NRQL リファレンスをご覧ください。

複数の New Relic アカウントを使っている場合は、クエリツールのアカウントスイッチャから対象アカウントを変更することで、別のアカウントのデータを照会することができます。

パーサーは、構文エラーを特定できますが、通常、論理的なエラーは、クエリを実行するまで分かりません。クエリが実行できない場合は、エラーレポートは、最初に特定したエラーの位置を示します。明示的に NULL を要求しない限り、New Relic Insightsは、完全に NULL の結果を無視します。

NRQL の構文

    SELECT function(attribute) [AS 'label'][, ...] 
     FROM event
     [WHERE attribute [comparison] [AND|OR ...]][AS 'label'][, ...]
     [FACET attribute | function(attribute)]
     [LIMIT number]
     [SINCE time]
     [UNTIL time]
     [WITH TIMEZONE timezone]
     [COMPARE WITH time]
     [TIMESERIES time]

New Relic は、NRQL ステートメントをイベントクエリとして参照します。NRQL イベントクエリの構文は、標準の SQL クエリと同じ作りです。基本的な構文規則は次のとおりです。

  • SELECTFROM 句は、必須です。それ以外の句は、オプションです。
  • 属性名は、大文字と小文字を区別します。NRQL 句関数では、大文字と小文字を区別しません。
  • 文字列を利用する際は、シングルクォート '' で囲ってください。
  • スペースのあるカスタム属性名を指定するにはバッククォート `` を使ってください。(例: `Logged-in user`)。
  • Insights は “coercion” をサポートしていません。つまり、文字列として格納された float は、文字列として扱われ、float 値を期待する関数ではうまく動きません。
  • 基本的な数学関数は、SELECT 句で利用できます。
  • Insights には SQL の JOIN 関数と同等の機能がありませんが、カスタム属性を使って、JOIN をシミュレートできます。
NRQL クエリの基本
SELECT uniqueCount(user) 
 FROM  PageView 
 WHERE userAgentOS = 'Mac' 
 FACET countryCode
 SINCE 1 day ago 
 LIMIT 20 
属性名にスペースのある属性を使う場合の NRQL クエリ
SELECT count(*) 
 FROM Transaction 
 FACET `Logged-in user`
複数のイベントまたは列を照会する
コンマ(,)を使うと、2つのイベントタイプのデータをマージしたり、データセットの複数の列のデータを返すことができます。複数のイベントタイプを返すには、タイプをカンマで結合します。

SELECT ...
  FROM event, event
  ...

このクエリは、過去3日間のすべてのAPM トランザクションBrowser イベントの数を返します。

SELECT count(*) FROM Transaction, PageView SINCE 3 days ago

データセットから複数の列のデータを返すには、集約引数をカンマで区切ります。

SELECT function(attribute), function(attribute) ...
  FROM ...

このクエリは、先週の Browser イベントの最小処理時間、平均処理時間、最大処理時間を返します。

SELECT min(duration), max(duration), average(duration)
  FROM PageView SINCE 1 week ago

Insights API で NRQL の利用

NRQL は、Insights API を使って、データのリモートクエリすることもできます。API リクエストで NRQL を使用する場合、NRQL クエリは所定の方法でフォーマットする必要があります。詳しくは、API 用クエリの生成をご覧ください。