New Relic Data Plus では、コンプライアンスやデータ分析のご要件に対応するためのオプションとして、テレメトリーデータのエクスポート機能がご利用頂けます。

テレメトリーデータのエクスポート方法は2種類あり、New Relic内部に蓄積された履歴データのエクスポートと、New Relicが受信したデータをリアルタイムで外部ソースに配信する、ストリーミングデータのエクスポートがあります。これらをご活用頂くことで、高度なコンプライアンス要件に対応したり、外部の分析ツールと連携してより深い洞察を得ることが可能となります。

本記事では、2種類のエクスポートそれぞれの特徴と、実際のエクスポートの方法について解説します。それに先立って、データエクスポート機能をご利用頂くために必要となるData Plusの概要を簡単に説明します。

Data Plus : オブザーバビリティを強化し、データに力を与える

New Relic Data Plusは、セキュリティ、スケール、パフォーマンスの強化をはじめ、オブザーバビリティの実践における高度な要求に応えるオプションを提供します。Data Plusでご利用頂ける機能には、データエクスポートのほか、データ保持期間の延長や、ログの難読化、FedRAMPへの準拠、より長時間のクエリ実行などがあります。Data Plusの詳細については、こちらのブログもご参照ください。

エクスポート方法の選択

直近2時間より以前のデータを取り出すには、履歴データのエクスポートを使用します。直近12時間以内のデータと、それ以降にNew Relicが受信するデータを継続的にエクスポートする場合には、ストリーミングデータのエクスポートを使用します。ユースケースに合わせて選択してください。

履歴データのエクスポート

履歴データのエクスポートでは、New Relicが過去に取り込んだ既存のデータを取り出すことができます。エクスポート対象はNRQLクエリで指定しますが、標準NRQLクエリの制限を超えるクエリを実行できます。直近12時間より以前の範囲であれば、クエリで指定可能な期間に制限はなく、最大2億のデータポイントを一度にエクスポートすることができます。

NerdGraphでエクスポート用のクエリを作成すると、JSON形式のレスポンスが返されます。このJSONの中に、エクスポートされたデータをダウンロードするためのURLが含まれています。

履歴データのエクスポートは、監査やコンプライアンス要件の変化に応じて、過去のデータを長期保存用のストレージに移動したり、または第三者機関へデータを提供するような場面に適しています。

ストリーミングデータのエクスポート

ストリーミングデータのエクスポートでは、New Relicが新たに取り込んだデータを、任意のKinesis Data Firehoseエンドポイントを通じて継続的にストリーミングします。
NRQL形式のルールを指定して、特定のデータのみをエクスポートするよう設定することができます。

ストリーミングデータのエクスポートをご利用頂くと、履歴データのエクスポートを毎回手動で実行する必要はありません。たとえば、New Relicが収集するメトリクスやログを、継続的にデータレイクに入力して分析に使用する場合、またはコンプライアンスやセキュリティの観点から、長期かつ継続的なデータの保存が求められるような場合には、ストリーミングデータのエクスポートが有効です。

履歴データをエクスポートする方法

NerdGraphエクスプローラーを使用して、履歴データをエクスポートする方法の例をご紹介します。NerdGraphエクスプローラーを初めて利用される方は、コンソールからデータを取得したり、ミューテーションを使用してクエリを実行するためのチュートリアルも併せてご一読ください。

ここでは、トラブルシューティングを想定して、特定のエンティティに関連するログを履歴データとしてエクスポートします。
以下のコマンドを使用してクエリを作成します。アカウントIDやエンティティID、時間は適宜置き換えてください。

mutation {historicalDataExportCreateExport (accountID: YOUR_ACCOUNT_ID, nrql: “FROM Log select * WHERE entity.guid = “YOUR_ENTITY_ID” SINCE ‘YOUR_BEGIN_DATE_TIME’ UNTIL ‘YOUR_END_DATE_TIME’”){    percentComplete    nrql    status    id    message}

これにより、エクスポートのソースおよびエンティティ参照として使用されるクエリIDが出力されます。

New Relic UIに記述されたミューテーションの例

次に、以下のコマンドを使用して履歴データのエクスポートを開始します。

historicalDataExport {export(id: “YOUR_QUERY_ID_HERE”)

このプロセスには時間がかかる場合がありますが、HTTPまたはブラウザのタイムアウトによる中断を受けることなく、非同期で実行されます。

New Relic UIの履歴エクスポートの結果

エクスポートが完了すると、実際にエクスポートされたデータのダウンロードURLを含むJSONが出力されます。エクスポート結果の有効期限は1週間です。また、結果に含まれるデータセットの各URLの有効期限は6時間です。もしURLの有効期限が過ぎてしまった場合は、同じクエリを実行することで再度生成できます。

履歴データのエクスポートの詳細についてはドキュメント、またはこちらの動画も参照ください。

ストリーミングデータをエクスポートする方法

次に、New Relicに保存されるデータをリアルタイムで配信する、ストリーミングデータのエクスポートについて説明します。

ストリーミングデータのエクスポートを開始するには、NerdGraphを介してエクスポートの詳細を記述したルールを作成します。ルールには、ルール名と対象データの説明、エクスポート対象のデータを返すNRQLクエリ、ストリーミング先の情報を記述します。

以下が、エクスポート用のルールを作成するミューテーションの例です。ルール作成が完了すると、ストリーミングデータのエクスポートが開始されます。

 mutation {  streamingExportCreateRule(    accountId: account id here,     ruleParameters: {      description: "rule description",       name: "rule name",       nrql: "SELECT * FROM NodeStatus"    },   awsParameters: {      awsAccountId: "aws account id here",       deliveryStreamName: "firehose-stream-name",       region: "us-east-1",       role: "firehose-role"    }  ) {    id    status  }}

ストリーミングエクスポートの有効化と無効化

作成したルールは、後から有効・無効を切り替えることができます。
そのため、特定期間のデータのみをストリーミングするようなユースケースでも、毎回ルールを削除して再作成する必要はありません。

なお、有効化できるのは事前に無効化されたルールのみです。すでに有効化されているルールを有効化しようとするとエラーとなりますので、ご注意ください。

ルールを有効化するには、以下のミューテーションを使用します。

mutation {  streamingExportEnableRule(id: “query id here”) {    id    ...  }}

ルールを無効にするには、以下のミューテーションを使用します。

mutation {  streamingExportDisableRule(id: “query id here”) {    id    ...  }}

エクスポートルールの更新や削除の方法、その他のベストプラクティスなど、ストリーミングデータのエクスポートの詳細については、ドキュメントにて解説しておりますので、併せてご参照ください。