このガイドは、New Relic REST API v2からNerdGraph GraphQL APIへの移行に役立ちます。NerdGraphはNew Relicが推奨するAPIであり、単一の統合されたエンドポイント、正確なデータ取得、および強力な型付けを提供します。
重要
New Relic REST API v2(アラートエンドポイントを含む)およびデプロイメントv0 APIは、2027年7月31日にサポートを終了します。この日付以降、これらのエンドポイントは利用できなくなります。その日付より前に、インテグレーションをNerdGraphに移行してください。
ヒント
このガイドのクエリは出発点です — REST v2エンドポイントの直接的な代替ではありません。どのベースクエリでも、不要なフィールドを省略したり、元のREST呼び出しでは利用できなかった可能性のあるフィールドを追加したりできます。"outline"オブジェクトのコレクションと詳細フィールドの比較など、場合によっては、フィールドを直接完全に一致させることができないことがあります。
あなたが始める前に
ユーザーAPIキーを取得する
REST呼び出しを行うためにすでに使用しているユーザーAPIキーを再利用できますが、REST v2 APIはユーザーAPIキーの作成に使用されたアカウントに基づいて想定を行っていたことに注意してください。NerdGraphは同様の想定を行いません。
NerdGraphエンドポイント
https://api.newrelic.com/graphqlhttps://api.eu.newrelic.com/graphql
インタラクティブに探索
インラインドキュメントとオートコンプリートを備えたNerdGraph API Explorerを使用して、クエリを構築およびテストします。
エンティティGUID
NerdGraphでは通常、数値のアプリケーションIDの代わりにエンティティGUID(グローバル一意識別子)を使用します。エンティティ検索クエリを使用して、REST APIのアプリケーションIDからエンティティGUIDを検索できます(アプリケーションを参照してください)。Change Tracking (変更追跡機能)は、appIdのみで引き続き実行できます。
認証
REST API v2:
$curl -X GET 'https://api.newrelic.com/v2/applications.json' \> -H "Api-Key: $USER_API_KEY"NerdGraph:
$curl -X POST 'https://api.newrelic.com/graphql' \> -H 'Content-Type: application/json' \> -H "Api-Key: $USER_API_KEY" \> -d '{"query": "{ actor { user { email } } }"}'詳細については、NerdGraphの概要を参照してください。
主な違い
機能 | REST API v2 | NerdGraph(GraphQL) |
|---|---|---|
プロトコル | 複数のRESTエンドポイント | 単一のGraphQLエンドポイント |
認証 | ユーザーAPIキー(
または
ヘッダー) | ユーザーAPIキー(
ヘッダー)、システムアイデンティティ |
データ取得 | 固定されたレスポンス形状 | 指定されたクエリによって決定されるレスポンスの形状 |
識別子 | 数値ID(例:アプリケーションID) | アカウントには整数、アプリケーションにはエンティティGUIDなど。 |
リストと詳細の比較 | リストエンドポイントで返される完全なオブジェクト | 多くのコレクションフィールドには、"Outline"オブジェクトのみが含まれます。詳細を取得するには、単一の項目をクエリする必要がある場合があります。 |
ページ付け | ページベース(
) | カーソルベースのページネーション |
メトリックデータ | 専用のメトリクスエンドポイント |
経由のNRQLクエリ、または
|
レート制限 | キーごとの制限 | 同時実行とスループットの制限事項 |
アプリケーション
アプリケーションのリスト
REST API v2: GET /v2/applications.json
NerdGraph:APMアプリケーションを見つけるには、entitySearchを使用します。結果を特定のアカウントに絞り込むには、accountId = YOUR_ACCOUNT_IDを追加します。accountIdを提供する必要はなく、AND domainId = <ID of app>を追加することで特定のアプリケーションを検索できます。
{ actor { entitySearch( query: "domain = 'APM' AND type = 'APPLICATION' AND accountId = YOUR_ACCOUNT_ID" ) { results { entities { guid name reporting alertSeverity ... on ApmApplicationEntityOutline { applicationId language apmSummary { responseTimeAverage throughput errorRate apdexScore } } } nextCursor } } }}名前でフィルタリングするには(filter[name]に相当):
{ actor { entitySearch( query: "domain = 'APM' AND type = 'APPLICATION' AND accountId = YOUR_ACCOUNT_ID AND name LIKE 'MyApp'" ) { results { entities { guid name } } } }}ヒント
REST API GET /v2/applications.jsonは、データの報告を停止したアプリケーションや削除されたアプリケーションを返す場合があります。NerdGraph entitySearchは、エンティティプラットフォームでインデックス付けされたエンティティのみを返します。NerdGraphからの結果が少ない場合、報告を行っていない、または長期間非アクティブなアプリケーションが原因である可能性があります。
アプリケーションの表示
REST API v2: GET /v2/applications/{id}.json
NerdGraph: エンティティGUIDでフェッチする:
{ actor { entity(guid: "YOUR_ENTITY_GUID") { name alertSeverity reporting ... on ApmApplicationEntity { applicationId language apmSummary { responseTimeAverage throughput errorRate apdexScore hostCount instanceCount } settings { apdexTarget serverSideConfig } } } }}ヒント
REST APIアプリケーションIDからエンティティGUIDを見つけるには:
{ actor { entitySearch(query: "domainId = 'APP_ID' AND domain = 'APM'") { results { entities { guid name } } } }}アプリケーション設定を更新する
REST API v2: PUT /v2/applications/{id}.json
NerdGraph:
mutation { agentApplicationSettingsUpdate( guid: "YOUR_ENTITY_GUID" settings: { alias: "My App Display Name" apmConfig: { apdexTarget: 0.5, useServerSideConfig: true } } ) { alias guid apmSettings { apdexTarget useServerSideConfig } }}ヒント
利用可能な設定は他にも多数あります。完全なリストについては、NerdGraph API Explorerのインラインドキュメントを参照してください。
アプリケーションを削除する
REST API v2: DELETE /v2/applications/{id}.json
NerdGraph:
mutation { agentApplicationDelete(guid: "YOUR_ENTITY_GUID") { success }}詳細については、NerdGraphエンティティチュートリアルおよびAPM設定チュートリアルを参照してください。
アプリケーションメトリクスデータ
メトリクス名のリスト
REST API v2: GET /v2/applications/{app_id}/metrics.json
NerdGraph:利用可能なメトリクス名を一覧表示するには、NRQLクエリを使用します:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT uniques(metricTimesliceName) FROM Metric WHERE appId = YOUR_APP_ID AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX" ) { results } }}または、アプリケーション名でフィルタリングします:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT uniques(metricTimesliceName) FROM Metric WHERE appName = 'YourAppName' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX" ) { results } }}ヒント
REST APIは、時間枠に関係なく、過去に認識されたすべてのメトリクス名を、各メトリクスの利用可能な値のタイプ(たとえば、average_response_time、call_count、calls_per_minute)とともに返します。NRQLクエリは、SINCEの期間内にデータを報告したメトリクスのみを返します — より多くのメトリクス名を見つけるには、期間を延長してください(たとえば、SINCE 1 WEEK AGO)。NerdGraphには、メトリクスごとの値のタイプをリストするための同等の機能はありません。代わりに、以下のサマリーマッピングテーブルを使用する(またはリンクをたどってさらに多くのマッピングを参照する)ことで、REST APIの値の名前をNRQL関数に変換してください — すべてのタイムスライスメトリクスは同じセットの集計関数をサポートしています。
メトリックデータの取得
REST API v2: GET /v2/applications/{app_id}/metrics/data.json?names[]=HttpDispatcher&values[]=average_call_time&values[]=call_count
NerdGraph:適切な集約関数とともにNRQLクエリを使用します。TIMESERIESを追加して、間隔ごとのデータポイント(REST APIのtimeslice配列に相当)を取得します:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT count(newrelic.timeslice.value) AS call_count, average(newrelic.timeslice.value) * 1000 AS average_call_time FROM Metric WHERE appId = YOUR_APP_ID AND metricTimesliceName = 'HttpDispatcher' SINCE 30 MINUTES AGO TIMESERIES" ) { results } }}ヒント
TIMESERIESがない場合、NRQLは時間範囲全体に対する単一の集計値を返します。REST APIは、デフォルトで1分ごとのタイムスライスを返します。REST APIのデフォルトの粒度に合わせるには、TIMESERIES 1 minuteを追加します。
REST APIのメトリクス値からNRQL関数へのマッピング
REST APIの値 | NRQL関数 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
詳細については、メトリクスAPIの概要、メトリクスクエリガイド、およびメトリックタイムスライスクエリをNRQLに移行するをご覧ください。
アプリケーションのホストとインスタンス
アプリケーションホストの一覧表示
REST API v2: GET /v2/applications/{app_id}/hosts.json
NerdGraph: ホストレベルのデータをクエリするにはNRQLを使用します:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT uniqueCount(host) FROM Transaction WHERE appName = 'YourAppName' SINCE 1 hour ago FACET host" ) { results } }}ヒント
FROM Transactionのアプローチでは、SINCEの期間内にトランザクションを処理したホストのみが返されます。
アプリケーションホスト/インスタンスのメトリクスデータ
REST API v2: GET /v2/applications/{app_id}/hosts/{host_id}/metrics/data.json
NerdGraph:NRQLクエリをホストまたはエージェントインスタンスでフィルタリングします:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT average(newrelic.timeslice.value) * 1000 AS avg_response_time FROM Metric WHERE appName = 'YourAppName' AND host = 'your-host.example.com' AND metricTimesliceName = 'HttpDispatcher' SINCE 30 MINUTES AGO" ) { results } }}デプロイメント
デプロイメントの一覧表示
REST API v2: GET /v2/applications/{app_id}/deployments.json
NerdGraph:NRQLを介してデプロイメントをクエリします:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT eventType(), deploymentId or changeTrackingId AS 'id', * FROM ChangeTrackingEvent, Deployment WHERE (eventType() = 'Deployment' OR (eventType() = 'ChangeTrackingEvent' AND category = 'Deployment')) AND entity.guid = 'YOUR_ENTITY_GUID' SINCE 1 WEEK AGO LIMIT 100" ) { results } }}デプロイメントの作成
REST API v2: POST /v2/applications/{app_id}/deployments.json
NerdGraph: changeTrackingCreateEventミューテーションを使用します。
mutation { changeTrackingCreateEvent( changeTrackingEvent: { entitySearch: { query: "name = 'YOUR_ENTITY_NAME' and accountId = YOUR_ACCOUNT_ID" } categoryAndTypeData: { kind: { category: "DEPLOYMENT", type: "BASIC" } categoryFields: { deployment: { version: "1.2.3" changelog: "Fixed authentication bug" commit: "abc123def456" } } } description: "Production deployment of auth fix" shortDescription: "user deployer@example.com deployed version 1.2.3 to environment: commerce_prod" user: "deployer@example.com" customAttributes: { cloud_vendor: "vendor_name" region: "us-east-1" environment: "commerce_prod" } } ) { changeTrackingEvent { changeTrackingId timestamp user description entity { guid domain name } customAttributes } }}ヒント
他のいくつかのNerdGraph操作と同様に、changeTrackingCreateEventはentitySearchを受け入れるため、REST APIからの最も簡単な移行パスになります。nameだけでなく、entityGuidがある場合はでも検索できます。利用可能なすべてのフィールドについては、NerdGraphを使用した変更の追跡をご覧ください。
デプロイメントの削除
REST API v2: DELETE /v2/applications/{app_id}/deployments/{id}.json
NerdGraph: NerdGraphには、デプロイメントを直接削除するミューテーションはありません。デプロイメント記録は、不変のChange Tracking (変更追跡機能)イベントです。
詳細については、NerdGraphを使用した変更追跡を参照してください。
キートランザクション
キートランザクションを一覧表示する
REST API v2: GET /v2/key_transactions.json
NerdGraph:KEY_TRANSACTIONタイプでエンティティ検索を使用します。特定のアカウントにスコープを設定するには、accountIdを追加します:
{ actor { entitySearch( query: "type = 'KEY_TRANSACTION' AND accountId = YOUR_ACCOUNT_ID" ) { results { entities { guid name reporting alertSeverity } nextCursor } } }}ヒント
KeyTransactionEntityOutlineタイプには、レスポンスタイムやスループットなどのサマリーメトリクスは直接含まれていません。キートランザクションのパフォーマンスデータを取得するには、以下の完全なエンティティクエリを使用するか、キートランザクションのメトリクス名に対してNRQLクエリを実行します。
キートランザクションを表示する
REST API v2: GET /v2/key_transactions/{id}.json
NerdGraph:
{ actor { entity(guid: "KEY_TRANSACTION_ENTITY_GUID") { name ... on KeyTransactionEntity { apdexTarget metricName application { guid entity { name } } } } }}同等のパフォーマンスメトリクス(たとえば、スループット)を取得するには、キートランザクションのメトリクス名を指定してNRQLクエリを使用します:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT average(newrelic.timeslice.value) * 1000 AS responseTimeAverage, rate(count(newrelic.timeslice.value), 1 minute) AS throughput FROM Metric WHERE entity.guid = 'ENTITY_GUID' SINCE 30 minutes AGO TIMESERIES" ) { results } }}モバイルアプリケーション
モバイルアプリケーションの一覧表示
REST API v2: GET /v2/mobile_applications.json
NerdGraph:
{ actor { entitySearch( query: "domain = 'MOBILE' AND type = 'APPLICATION' AND accountId = YOUR_ACCOUNT_ID" ) { results { entities { guid name reporting ... on MobileApplicationEntityOutline { applicationId mobileSummary { appLaunchCount crashCount crashRate httpErrorRate httpRequestCount httpRequestRate httpResponseTimeAverage mobileSessionCount networkFailureRate usersAffectedCount } } } nextCursor } } }}モバイルアプリケーションを表示する
REST API v2: GET /v2/mobile_applications/{id}.json
NerdGraph:
{ actor { entity(guid: "MOBILE_APP_ENTITY_GUID") { name ... on MobileApplicationEntity { applicationId mobileSummary { appLaunchCount crashCount crashRate httpErrorRate httpRequestCount httpResponseTimeAverage mobileSessionCount networkFailureRate usersAffectedCount } } } }}ヒント
REST APIモバイルアプリケーションIDからエンティティGUIDを見つけるには:
{ actor { entitySearch(query: "domainId = 'MOBILE_APP_ID' AND domain = 'MOBILE'") { results { entities { guid name } } } }}モバイルアプリケーションのメトリクスデータ
REST API v2: GET /v2/mobile_applications/{id}/metrics/data.json
NerdGraph:モバイルメトリクスデータをクエリするには、NRQLを使用します:
{ actor { nrql( accounts: [YOUR_ACCOUNT_ID] query: "SELECT average(duration) FROM Mobile WHERE appName = 'YourMobileApp' SINCE 1 HOUR AGO TIMESERIES" ) { results } }}モバイルアプリケーションの作成
REST API v2: POST /v2/mobile_applications.json
NerdGraph:agentApplicationCreateMobileミューテーションを使用します:
mutation { agentApplicationCreateMobile( accountId: YOUR_ACCOUNT_ID name: "My New Mobile App" ) { accountId applicationToken guid name }}ヒント
レスポンスには、アプリケーションでモバイルエージェントを構成するために必要なapplicationTokenが含まれています。guidは、後続のNerdGraphクエリ用のエンティティGUIDです。
詳細については、モバイル設定チュートリアルを参照してください。
ブラウザ アプリケーション
Browserアプリケーションのリスト
NerdGraph:
{ actor { entitySearch( query: "domain = 'BROWSER' AND type = 'APPLICATION' AND accountId = YOUR_ACCOUNT_ID" ) { results { entities { guid name reporting ... on BrowserApplicationEntityOutline { applicationId browserSummary { ajaxRequestThroughput ajaxResponseTimeAverage jsErrorRate pageLoadThroughput pageLoadTimeAverage spaResponseTimeAverage } } } nextCursor } } }}ヒント
数値のアプリケーションIDからブラウザアプリケーションのエンティティGUIDを見つけるには:
{ actor { entitySearch(query: "domainId = 'BROWSER_APP_ID' AND domain = 'BROWSER'") { results { entities { guid name } } } }}スタンドアロンのブラウザアプリケーションを作成する
REST API v2:POST /v2/browser_applications.json(コピー/ペーストによるインストール方法)
NerdGraph:agentApplicationCreateBrowserミューテーションを使用します:
mutation { agentApplicationCreateBrowser( accountId: YOUR_ACCOUNT_ID name: "My New Browser App" settings: { cookiesEnabled: true distributedTracingEnabled: true loaderType: SPA } ) { guid name settings { cookiesEnabled distributedTracingEnabled loaderType } }}ヒント
settingsパラメーターはオプションです。省略した場合、デフォルトが使用されます。loaderTypeのオプションは、SPA(デフォルト)、PRO、およびLITEです。
APMアプリケーションでブラウザ監視を有効にする
REST API v2: 既存のAPMアプリでのブラウザ監視の有効化は、アプリケーション設定を通じて行われていました。
NerdGraph: APMアプリケーションのエンティティGUIDとともにagentApplicationEnableApmBrowserミューテーションを使用します:
mutation { agentApplicationEnableApmBrowser( guid: "YOUR_APM_ENTITY_GUID" settings: { cookiesEnabled: true distributedTracingEnabled: true loaderType: SPA } ) { name settings { cookiesEnabled distributedTracingEnabled loaderType } }}ヒント
これにより、APMアプリケーションによって提供されるページへのBrowserエージェントの自動インジェクションが有効になります。settingsパラメーターはオプションです。guidは、ブラウザのエンティティGUIDではなく、APMアプリケーションのエンティティGUIDである必要があります。ローカル設定を使用してリアルユーザー監視を制御している場合、新しいAPMアプリケーションでは多くの場合これは必要ありません。
詳細については、Browser設定チュートリアルをご覧ください。
アラート
チャンネルの一覧
REST API v2: GET /v2/alerts_channels.json
NerdGraph:NerdGraphにはチャネルに対する直接的なクエリはありません。通知ワークフローの使用に移行してください。
{ actor { account(id: YOUR_ACCOUNT_ID) { aiWorkflows { workflows { entities { guid name workflowEnabled destinationConfigurations { channelId name type } destinationsEnabled lastRun } } } } }}イベントのリスト
REST API v2: GET /v2/alerts_events.json
NerdGraph:
インシデントの一覧表示
REST API v2: GET /v2/alerts_incidents.json
NerdGraph:
{ actor { account(id: YOUR_ACCOUNT_ID) { aiIssues { issues { issues { account { id } activatedAt closedAt conditionFamilyId conditionName description deepLinkUrl entityGuids entityNames } } } } }}違反のリスト
REST API v2: GET /v2/alerts_violations.json
NerdGraph:aiIssuesインシデントクエリを使用します:
{ actor { account(id: YOUR_ACCOUNT_ID) { aiIssues { incidents( filter: {} timeWindow: { startTime: 1779905700000, endTime: 1779905800000 } ) { incidents { account { id name } closedAt createdAt description entityGuids entityNames entityTypes incidentId issueId priority state timestamp title updatedAt } } } } }}