こんにちは。SCSKの井上です。
New Relicで柔軟にデータを分析したいけれど、分析方法に迷う方も多いのではないでしょうか。本記事では、New Relicで収集したデータの分析手法を解説します。
はじめに
New Relicでデータを収集後、データを分析しなければ価値を最大限に発揮ができません。New RelicにはNRQL(New Relic Query Language:通称ヌルクル)と呼ばれるデータ検索するためのNew Relic独自の言語があります。「独自言語を学ぶのは大変そう…」と思うかもしれませんが、SQLの知識がある方ならすぐに理解できます。SQLを知らない方でも、基本構造を押さえれば柔軟な分析が可能です。本記事では、データ分析の可能性を広げるため、NRQLの基本概念と活用方法を解説していきます。個々のNRQL文については別の記事にて紹介します。
NRQLでできること
NRQLは、New Relicに送信したデータを検索・分析するためのクエリ言語です。NRQLを使うことで、以下のような分析ができます。
- パフォーマンス分析
トランザクションの平均レスポンスタイムや最大値、分布を確認し、ボトルネックを特定 - エラーモニタリング
エラー率やエラーメッセージの頻度を集計し、異常発生の兆候を把握 - リソース使用状況の把握
CPU、メモリ、ディスクの使用率やトラフィックを監視し、キャパシティ計画やスケーリングの判断材料とする - ビジネス指標の分析
国別のアクセス数やアクセス時間帯などのビジネスデータを集計
NRQLの基本構造
NRQLは、テレメトリデータを分析するためのクエリ言語です。SELECTで取得する値を決め、FROMで対象イベントを指定し、WHEREで条件を絞ります。オプションとしてFACETやTIMESERIESでグループ化や時系列分析をすることができます。どんな文法ルールがあり、調べ方があるのかを解説していきます。
NRQLの文法ルール
NRQLを書く際には、いくつかの基本ルール(お作法)があります。これらを理解しておくことで、NRQLが正しく動作し、効率的にデータ分析ができます。まずは、NRQLのお作法を確認してみます。
| ルール項目 | 内容 |
| 必須句 | SELECT と FROM は必須。他の句(WHERE、FACET、LIMITなど)はオプション。 |
| クエリ開始位置 | クエリは SELECT または FROM からクエリ文の開始可能。一部SHOWコマンドも使用可。 |
| クエリ文字列のサイズ | 最大 4KB未満。超えるとエラー表示 (New Relicでは、クエリが長すぎると処理できない)。 |
| 大文字・小文字の扱い | イベントタイプ名と属性名は 区別される。NRQL句や関数は 区別されない。
イベントタイプ名:FROMで指定する対象データ。属性名:FROMで指定した個々のデータ。 |
| 文字列の指定方法 | シングルクォート ‘ ‘ を使用 |
| カスタムイベント・属性名 | 英数字、コロン(:)、アンダースコア(_)、ピリオド(.)を使用可能。左記以外でスペースや特殊文字が含まれる場合は バッククォート(``)で囲む 。 |
| データ型の型変換 | 型強制はサポートされない。データは収集時の型のまま扱う必要。文字列を数値に変換したり、数値を文字列に変換することは不可。 |
NRQLの基本構文
NRQLの基本構文は、FROM に対象のイベントタイプまたは Metric を記述します。SELECT にイベントタイプ内の属性や関数、またはメトリクス名+関数を指定します。FROM は「どのデータ(イベントタイプまたはメトリクス)から取り出すか」、SELECT は「どの値を取り出すか」を決めます。
例えば、イベントタイプ Transaction には appName や duration などの属性があります。FROM Transaction SELECT duration と記述するとトランザクションの処理時間を返します。メトリクスの場合は時間の経過とともに変化する数値を分析できます。 FROM Metric SELECT average(aws.ec2.CPUUtilization) と記述するとAWS EC2のCPU使用率を集計します。メトリクスの場合の構文はFROM Metricとして固定で使用します。いずれもSELECTから始めるかFROMから始めるか指定はありません。
NRQLで時間指定して分析したい場合、UTC時刻で書く必要があります。SINCE ‘2026-01-01 00:00:00’ UNTIL ‘2026-01-01 12:00:00’とした場合は、JSTでは2026-01-01 09:00~21:00に相当します。-9時間を意識して書く必要があります。
NRQLの句
NRQLでは、クエリを書くときに「どのデータを対象にするか」「どんな条件で絞り込むか」「どのような形式で結果を返すか」を指定します。この役割を担うのが「句」です。代表的な句は次のとおりです。
| 句 | 説明 | 使用例 |
| WHERE | 条件を指定してデータを絞り込み | WHERE appName = ‘MyApp’ |
| FACET | 属性ごとにグループ化(SQLのGROUP BYに相当) | FACET appName |
| LIMIT | 返す結果の件数を制御 | LIMIT 100 |
| SINCE / UNTIL | 時間範囲を指定 | SINCE 1 day ago UNTIL now |
| TIMESERIES | 時系列データを返す(グラフ化に利用) | TIMESERIES 1 minute |
| COMPARE WITH | 過去の期間と比較 | COMPARE WITH 1 week ago |
| WITH TIMEZONE | タイムゾーンを指定。SINCE/UNTILの固定時間には使えない。データを時間単位でグループ化して集計する際に使用。 | WITH TIMEZONE ‘Asia/Tokyo’ |
| AS | 別名を付ける | SELECT count(*) AS ‘CPU使用率’ |
NRQLの関数
取得したデータを「どのように集計・計算するか」を指定するのが「関数」です。関数を使うことで、件数の集計、平均値の算出、最大値や最小値の取得など、データを分析するための処理ができます。代表的な関数は次のとおりです。
| 関数 | 説明 | 使用例 |
| count() | 件数を数える | SELECT count(*) FROM Transaction |
| average() | 平均値を計算 | SELECT average(duration) |
| max() | 最大値を取得 | SELECT max(duration) |
| min() | 最小値を取得 | SELECT min(duration) |
| sum() | 合計値を計算 | SELECT sum(duration) |
| percentage() | 割合を計算 | SELECT percentage(count(*), WHERE error IS TRUE) |
| rate() | 単位時間あたりの発生率を計算 | SELECT rate(count(*), 1 minute) |
| latest() | 最新の値を取得 | SELECT latest(duration) |
| percentile() | パーセンタイル値を取得 | SELECT percentile(duration, 95) |
NRQLのデータタイプ
アカウントごとに有効化している機能が異なるため、一概にどのデータタイプが使えるか言えません。例えばInfrastructureエージェントを導入している場合は、Systemsampleが使えます。APMエージェントを利用していない場合は、Transactionなどを利用することができません。対象のアカウントでどのデータタイプを使用できるかは以下のSHOW EVENT TYPESコマンドを実行することで確認できます。または、データエクスプローラを使用して検索することができます。
NRQLのあいまい検索
NRQLのあいまい検索は以下があります。NRQLでは、完全一致だけでなく、部分一致やパターンマッチングを行うための演算子が用意されています。これらを利用することで、ログやイベントデータから特定のキーワードやパターンを柔軟に抽出できます。
| 演算子 | ワイルドカード | 意味 | 例 |
| LIKE | % | 任意の文字列(0文字以上) | appName LIKE ‘MyApp%’ → MyAppで始まる名前 |
データを探して、絞り込んで、理解するために
NRQLのクエリはNew Relicのプラットフォーム上で実行されます。ここでは、どのようなデータがどのような形式で格納されているのか、クエリを実行したい場合にどうやって操作したらよいのかを解説してきます。検索対象はすでに収集されたデータに対して行われるため、負荷の高いクエリを実行しても、監視しているホストやサービスには影響しません。ただし、New Relicのプラットフォーム側には負荷がかかるため、複雑なクエリや大量のデータを扱う場合は、実行制限や実行時間が長くなる可能性があります。
New Relicデータ辞書
New Relicで扱うデータの構造や属性を理解するためのリファレンスです。NRQLを記述する際、どんなデータが格納されているかを把握していないとクエリを書くことはできません。NRQLの基本構造は『イベントタイプ(Event Type)と、その中に含まれる属性(Attributes)』という関係になっています。項目数が多いのでよく目にする項目について以下の表にまとめました。詳細は公式サイトをご確認ください。
| データソース名 | 代表的なイベントタイプ(データ種類) | 主な属性例(データ項目) |
| アカウント関連 | NrUsage | productLine, usageAmount |
| アラート | NrAiIncident | conditionName, policyName |
| APM | Transaction | appName, duration, error.message |
| ブラウザエージェント | PageView | appName, duration, countryCode |
| 分散トレーシング | Span | traceId, duration, service.name |
| インフラ | SystemSample | cpuPercent |
| Kubernetes | K8sContainerSample | cpuUsedCores |
| メトリック | Metric | metricName |
| 外形監視 | SyntheticCheck | monitorName, result |
クエリビルダー(Query Builder)
NRQLを実行するための画面のひとつにクエリビルダーがあります。複雑なNRQLを手動で書かなくても、GUIを使って自動補完機能でクエリを作成できます。また、クエリ結果をグラフ化してダッシュボードに追加したり、その結果を基にアラート条件を設定することも可能です。過去に実行したクエリ(検索や処理の内容)は履歴として保存されているので、再度同じクエリを実行したい場合でも、履歴から呼び出せるため、再入力する必要はありません。
クエリビルダーの操作手順
| 1.左下部の「Query your data」をクリックします。 | 2.以下の画面にてNRQLを記載していきます。 |
![]() |
![]() |
| 3.自動補完機能があるため、入力補完機能を使ってリストから選択しながらNRQLを作成できます。作成後、「Run」をクリックすることで、該当のグラフが表示されます。 | |
![]() |
データエクスプローラー(Data Explorer)
どんなデータが保存されているのかを確認したい場合に、GUI上で視覚的に確認できる場所がデータエクスプローラーです。NRQLの書き方がわからなくても、クリック操作でNRQLを作成することができます。以下、5つのデータタイプに分かれています。
| データタイプ | 特徴 | 利用シーン |
| Events | アプリやサービスのイベントデータ(例: Transaction, PageView) | アプリのレスポンス時間、エラー率、ユーザー操作分析など |
| Metrics | システムやサービスのメトリクス(CPU、メモリ、ネットワーク) | インフラ監視、リソース使用率分析など |
| Timeslices | 時間単位で集計されたデータ
TimeslicesはNew Relic Oneに統合する前に使われているため、現在はTIMESERIESを使うのが一般的。 |
過去のダッシュボードやAPI利用する場合に使用を想定 |
| Logs | アプリやシステムのログメッセージ | エラーログ検索、トラブルシューティングなど |
| lookups | IDを名前に変換して見やすくする | 視認性を高めるために、データの表示名を変更したいとき |
データエクスプローラの操作手順
実際にデータエクスプローラを使ってNRQLの構文を作成します。今回は、メモリの空き容量の平均を調べる例を基に進めます。そのためには、メモリの空き容量がどのデータのイベントタイプに含まれているかを、事前にNew Relicのデータ辞書で確認する必要があります。ここでは、データ辞書にアクセスしてどのイベントタイプに格納されているか確認済という前提で手順を解説します。
NRQLの活用
この記事では、NRQLの活用方法を2つ紹介します。
- NRQLの実行結果を日常的に確認する方法:ダッシュボードに追加して表示
- 既存NRQLをカスタマイズする方法:New Relicの既存テンプレートや自動生成されたグラフからNRQLを真似る
ダッシュボードに追加する
NRQLからデータ分析した結果を定常的に確認したい場合、ダッシュボードに追加して閲覧することができます。ここでは、NRQLから作成したデータをダッシュボードに追加する方法を解説します。
自動生成されるNRQLを使ってカスタマイズ
ダッシュボードの既存テンプレートを使えば、観測したいデータをすぐに表示できます。また、アラート設定では、New Relicが提示するNRQLを活用して、効率的にカスタムクエリを作成できます。ここでは自動生成されるNRQLの見方レベルまでの解説としています。
コメントアウトの仕方
--(ダッシュ2つ)
この記号の右側にある同じ行のテキストをコメントとして扱います。//(スラッシュ2つ)
この記号の右側にある同じ行のテキストをコメントとして扱います。/* ... */(スラッシュとアスタリスク)
この記号の間にあるテキストをコメントとして扱います。複数行にわたって記述できます。
主要クラウドのメトリクス
クラウド環境では、EC2やKubernetesなど多様なリソースが稼働しています。これらのメトリクスを一元的に分析することで、パフォーマンス最適化やコスト削減が可能です。New RelicのNRQLを使えば、クラウド連携で送られたテレメトリデータ(メトリクス、イベントやログ等)を柔軟にクエリし、ダッシュボード化できます。
| プラットフォーム | 命名規則・表現形式 | New Relicへの取り込み方式 |
| AWS | – aws.<namespace>.<metricName> に変換
( / → . に変換し、元の大文字小文字を保持) |
– CloudWatch Metric Streams(推奨):リアルタイムストリーミング – APIポーリング:サービス毎に間隔は異なり、AWS側で制限を受ける可能性あり |
| Azure | – azure.<resourceType>.<metricName> に変換(”Microsoft. → azure.” “/ → . “に変換。空白削除、元の大文字小文字維持) | – ポーリングベースでAzure Monitor APIを使用 – 取得頻度や範囲はサービスごとに間隔は異なり、Azure側で制限を受ける可能性あり |
| GCP | – gcp.<service>.<metricName> に変換 | – GCP Monitoring APIをポーリングして取得 – 取得頻度や範囲はサービスごとに異なる |
利用可能なメトリクスは、以下からご確認いただけます。
NRQLの利用制限
無制限にクエリを実行できると、 New Relicのサービスを使っている全世界のユーザーのパフォーマンスに悪影響を与える可能性があります。そのため、一定の利用制限を設けることで、誰もが公平に利用できるようリソース配分を実現しています。
| 制限項目 | 内容 | 備考 |
| クエリ実行時間
(結果が返されるまでの最大許容時間。この時間を超えるとタイムアウト) |
– Dataプラン: 最大 1分 – Data Plusプラン: 最大 10分 |
NerdGraph API経由の場合、デフォルトタイムアウトは 5秒 |
| API経由のクエリ数 | 1アカウントあたり 1分間に最大3,000クエリ | UIからの実行には適用されない |
| 同時実行クエリ数 | 複雑なクエリ(FACETやTIMESERIES含む)は最大5件程度推奨 | 長時間並列実行は制限に達する可能性あり |
| 制限確認方法 | Limits UIで現在の制限状況を確認可能 | 超過時はクエリが拒否される場合あり |
制限確認方法については以下の記事をご参照ください。
さいごに
この記事では、New Relicに送信したデータをどのように検索・分析できるかを解説しました。NRQLを使いこなすことで、柔軟なダッシュボードやアラートを作成でき、データ活用の幅が広がります。私自身、まだNRQLを使いこなしているわけではありませんが、AIにNRQL構文を質問しながらトライ&エラーを重ね、クエリの結果が表示されたときの達成感を糧にスキルを磨いています。今後はNRQLでよく使う構文例をご紹介します。
SCSKはNew Relicのライセンス販売だけではなく、導入から導入後のサポートまで伴走的に導入支援を実施しています。くわしくは以下をご参照のほどよろしくお願いいたします。




















