• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

NerdGraph:履歴データのエクスポートを使用してより大きなNRQL応答を返す

NRQLクエリを実行する場合、応答で返されるデータポイントの数の制限やクエリのタイムアウトなど、 さまざまな制限によって制限されます。履歴データのエクスポート機能を使用して、応答で200,000,000データポイントを返し(通常の制限である2000ではなく)、クエリのタイムアウトがないNRQLクエリを実行できます。結果は1つ以上のJSONファイルとして返されます。

要件

この機能にはデータプラスが必要です。

この機能を使用するには、 NerdGraphAPIを使用する必要があります。

制限と制限

この機能に関するいくつかの制限と制限は次のとおりです。

使用制限

エクスポートのデフォルトの使用制限は次のとおりです。

  • エクスポートは、2億未満のイベントを返すと見積もられる必要があります
  • エクスポートは、50 億未満のイベントを検査するように見積もる必要があります
  • アカウントごとに2つ以下の同時エクスポート

より高い制限が必要な場合は、アカウント担当者にご相談ください。

データ型の制限

一部のデータ型はエクスポートできません。

  • メートルのタイムスライスデータ
  • ディメンション指標( Metricデータ型)
  • インフラストラクチャイベントSystemSampleProcessSampleStorageSampleNetworkSampleContainerSample

時間範囲の制限

履歴データのエクスポート機能は、ライブデータまたは過去12時間のデータのクエリをサポートしていません。時間範囲は、少なくとも12時間前に終了する必要があります。

クエリ構文の要件

この機能は、特定の属性名とワイルドカード( SELECT * )の選択をサポートします。たとえば、次のようなクエリをサポートしています。

SELECT * FROM MobileRequest SINCE 3 days ago until 2 days ago
WHERE appName = 'interesting-application' SINCE '2022-06-11 11:05:00-0600'
UNTIL '2022-06-11 11:10:00-0600'

次のNRQLコンポーネントは使用できません。

  • 集計関数( sumcountaveragemax
  • 評価可能な関数( numericlogconcat
  • FACET
  • TIMESERIES
  • COMPARE WITH
  • ネストされた集計

エンドポイントの詳細

履歴データのエクスポート機能は、NerdGraph APIを使用し、次の3つのエンドポイントを利用します。

  • エンドポイントの作成により、ユーザーは、エクスポートとして実行するアカウントIDとNRQLを指定できます。
  • エクスポートエンドポイントの詳細を取得すると、ユーザーはアカウントIDとエクスポートID(作成エンドポイントからの応答本文にあります)を指定し、それを使用してエクスポートのステータスを取得できます。エクスポートが完了すると、1つ以上のダウンロードURLの形式で、このエンドポイントの応答に結果が表示されます。
  • アカウントエクスポートエンドポイントの詳細の取得により、ユーザーはアカウントIDを指定し、そのアカウントのすべてのアクティブで有効期限が切れていないエクスポートの詳細を取得できます。

クエリの例

エクスポートを作成する

NerdGraphを使用する1つの方法は、 NerdGraphエクスプローラーを使用することです。このセクションの手順では、エクスプローラーの使用に焦点を当てます。独自のスクリプトの実行に興味がある場合は、スクリプトを参照してください。

NerdGraphスキーマでは、 historicalDataExportCreateExportエンドポイントはmutation > historicalDataExportの下にあります。次のようなクエリを使用して、エクスポートを実行します。

応答本文にはIDを選択することをお勧めします。これは、エクスポートの詳細を取得し、結果を取得するために使用されるためです。

mutation {
  historicalDataExportCreateExport(accountId: YOUR_ACCOUNT_ID, nrql: "FROM Transaction SELECT duration, appId WHERE appName = 'interesting-application' SINCE '2022-06-11 11:05:00-0600' UNTIL '2022-06-11 11:10:00-0600'") {
    percentComplete
    nrql
    status
    id
    message
  }
}

#### Example response [#create-export-response]

Here's an example response for creating an export: 
{
  "data": {
    "historicalDataExportCreateExport": {
      "id": "609b6916-8ca9-417c-bbf8-02e4cdc3afd2",
      "message": null,
      "nrql": "FROM Transaction SELECT duration, appId WHERE appName = 'interesting-application' SINCE '2022-06-11 11:05:00-0600' UNTIL '2022-06-11 11:10:00-0600'",
      "percentComplete": 5,
      "status": "WAITING"
    }
  }
}

エクスポートをキャンセル

NerdGraphスキーマでは、 historicalDataExportCancelExportエンドポイントはmutation > historicalDataExportの下にあります。次のようなクエリを使用して、エクスポートを実行します。

応答本文でステータスを選択して、エクスポートが正常にキャンセルされたことを確認することをお勧めします。

mutation {
  historicalDataExportCancelExport(accountId: YOUR_ACCOUNT_ID, id: "YOUR_EXPORT_ID") {
    status
    id
  }
}

応答例

エクスポートをキャンセルする場合の応答の例を次に示します。

{
  "data": {
    "historicalDataExportCancelExport": {
      "id": "YOUR_EXPORT_ID",
      "status": "CANCELED"
    }
  }
}

特定のエクスポートの詳細を取得する

以下に示すように、作成エンドポイントからの応答で見つかったエクスポートIDを使用して、エクスポートの詳細を照会します。このエンドポイントは、NerdGraphのquery > actor > account > historicalDataExport > exportの下にあります。

{
  actor {
    account(id: YOUR_ACCOUNT_ID) {
      historicalDataExport {
        export(id: "YOUR_EXPORT_ID") {
          availableUntil
          eventCount
          eventTypes
          id
          message
          nrql
          percentComplete
          results
          status
        }
      }
    }
  }
}

応答例

特定のエクスポートの詳細を取得するための応答は次のとおりです。

{
"data": {
"actor": {
"account": {
"historicalDataExport": {
"export": {
"availableUntil": 1655499642845,
"eventCount": 1291,
"eventTypes": [
"MobileRequest"
],
"id": "4776677a-1e0f-4ad5-a790-cdbe40a1f348",
"message": null,
"nrql": "SELECT * FROM MobileRequest SINCE 3 days ago UNTIL 2 days ago",
"percentComplete": 100,
"results": [
"downloadLink1",
"downloadLink2"
],
"status": "COMPLETE_SUCCESS"
}
}
}
}
}
}

アカウントのエクスポートの詳細を取得する

以下に示すように、アカウントIDを使用して、そのアカウントからのすべてのエクスポートの詳細を取得できます。エンドポイントは、NerdGraphスキーマのquery > actor > account > historicalDataExport > exportsの下にあります。

{
  actor {
    account(id: YOUR_ACCOUNT_ID) {
      historicalDataExport {
        exports {
          availableUntil
          eventCount
          eventTypes
          id
          message
          nrql
          percentComplete
          results
          status
        }
      }
    }
  }
}

応答例

アカウントのエクスポートの詳細を取得するための応答例は次のとおりです。

{
"data": {
"actor": {
"account": {
"historicalDataExport": {
"exports": [
{
"availableUntil": 1655499642845,
"eventCount": 1291,
"eventTypes": [
"MobileRequest"
],
"id": "4776677a-1e0f-4ad5-a790-cdbe40a1f348",
"message": null,
"nrql": "SELECT * FROM MobileRequest SINCE 3 days ago UNTIL 2 days ago",
"percentComplete": 100,
"results": [
"downloadLink1",
"downloadLink2"
],
"status": "COMPLETE_SUCCESS"
}
]
}
}
}
}
}

スクリプトを使用する

スクリプトからプログラムで履歴データのエクスポートを照会すると便利な場合があります。次のcurlコマンドは、開始するのに役立つ場合があります。応答の例については、「クエリの例」セクションの応答を参照してください。

エクスポートを作成する

curl --location --request POST 'https://api.newrelic.com/graphql' \
--header 'Content-Type: application/json' \
--header 'API-Key: YOUR_USER_KEY \
--data-raw '{"query":"mutation {\n  historicalDataExportCreateExport(accountId: YOUR_ACCOUNT_ID, nrql: "FROM Transaction SELECT duration, appId WHERE appName = 'interesting-application' SINCE '2022-06-11 11:05:00-0600' UNTIL '2022-06-11 11:10:00-0600'") {\n    percentComplete\n    nrql\n    status\n    message\n    id\n }","variables":{}}'

エクスポートをキャンセル

curl --location --request POST 'https://api.newrelic.com/graphql' \
--header 'Content-Type: application/json' \
--header 'API-Key: YOUR_USER_KEY \
--data-raw '{"query":"mutation {\n historicalDataExportCancelExport(accountId: YOUR_ACCOUNT_ID, id: "YOUR_EXPORT_ID") {\n status\n id\n }","variables":{}}'

エクスポートの詳細を取得する

curl --location --request POST 'https://api.newrelic.com/graphql' \
--header 'Content-Type: application/json' \
--header 'API-Key: YOUR_USER_KEY' \
--data-raw '{"query":"{\n  actor {\n    account(id: YOUR_ACCOUNT_ID) {\n      historicalDataExport {\n        export(id: \"YOUR_EXPORT_ID\") {\n          availableUntil\n          eventCount\n          eventTypes\n          id\n          message\n          nrql\n          percentComplete\n          results\n          status\n        }\n      }\n    }\n  }\n}","variables":{}}'

アカウントのエクスポートの詳細を取得する

curl --location --request POST 'https://api.newrelic.com/graphql' \
--header 'Content-Type: application/json' \
--header 'API-Key: YOUR_USER_KEY' \
--data-raw '{"query":"{\n  actor {\n    account(id: YOUR_ACCOUNT_ID) {\n      historicalDataExport {\n        exports {\n          availableUntil\n          eventCount\n          eventTypes\n          id\n          message\n          nrql\n          percentComplete\n          results\n          status\n        }\n      }\n    }\n  }\n}\n","variables":{}}'

結果の形式をエクスポート

クエリの結果は、2つのget detailsエンドポイントのいずれかからの結果フィールドにあります。それらは1つ以上のダウンロードリンクの形式です。結果ファイル自体は、エクスポートが実行されてから1週間有効であり、約100MB以下のGZIP圧縮JSONが含まれています。各リンクは、6時間有効になるように事前に署名されています。リンクの有効期限が切れた場合は、NerdGraphのエクスポート詳細オブジェクトを再クエリして結果を取得することで、新しいリンクを取得できます。

解凍された結果ファイルの例を以下に示します。

[
{
"attributes": {
"duration": 36,
"eventType": "Transaction",
"account": ACCOUNTID,
"timestamp": 1655174793213
}
},
{
"attributes": {
"duration": 3,
"eventType": "MobileRequest",
"account": ACCOUNTID,
"timestamp": 1655174793215
}
}
]

エクスポート関連のイベントに関するクエリとアラート

この機能は、エクスポートが実行されたNewRelicアカウントでカスタムイベントを生成します。アカウントで実行されたエクスポートに関する情報を取得するには、これらのイベントに関するアラートをクエリまたは作成すると便利な場合があります。

HistoricalDataExportイベントタイプには、エクスポートのステータス( CreatedCompletedFailedCanceled )、エクスポートID、エクスポートの生成元のNRQL文字列などの情報が含まれます。

クエリビルダーで実行したり、ダッシュボードに追加したりできる次のクエリは、先週作成されたすべてのエクスポートと、正常に完了してエラーが発生しなかったエクスポートの数を返します。

FROM HistoricalDataExport SELECT * WHERE status = 'Created' SINCE 1 WEEK AGO
FROM HistoricalDataExport SELECT count(*) WHERE status != 'Completed' FACET status SINCE 1 WEEK AGO

トラブルシューティング

アカウントはまだ有効になっていません

エクスポートを作成しようとすると、次のようなエラーメッセージが表示される場合があります。

Cannot query field \"historicalDataExportCreateExport\" on type \"RootMutationType\".

これを取得している場合は、エクスポート元のアカウントで履歴データのエクスポート機能がまだ有効になっていない可能性があります。質問がある場合は、要件を確認し、アカウント担当者に相談してアクセスについて質問してください。

事前に署名されたURLを使用して結果をダウンロードしようとすると、次のようなエラーが表示される場合があります。

<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>120</X-Amz-Expires>
<Expires>2022-06-24T15:16:45Z</Expires>
<ServerTime>2022-06-24T17:56:40Z</ServerTime>
<RequestId>1234567890ABC</RequestId>
<HostId>ABCD1234HOST-ID098765-XYZ</HostId>
</Error>

このようなエラーは、結果のURLの有効期限が切れていることを示しており、新しい結果のURLを取得するためにエクスポートオブジェクトを再クエリする必要があります。エクスポートを再実行する必要はありません。結果の新しいURLセットを取得するだけです。

Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.