New Relic に過去取り込んだ大量のログを簡単に取り出そう！

New Relic に取り込んだログを5000行以上一気に取り出したいときに活躍するのが[Historical Export](https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-historical-data-export/)という方法です。でも取り出すための手順をもっと簡略化して、もっと手軽にExportできるようにしたいですよね？
簡単に取り出すためのサンプルスクリプトをご紹介したいと思います！

## Historical Export とは
Historical Export とは New Relic に1度取り込まれたログをはじめとする様々なデータを、任意のタイミングで大量にJson形式でExportすることができる便利な機能です。
Logs画面から[5000行までExport](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202402)できますが、それ以上のログが必要な時もありますよね？
そんな時に活躍するのがHistorical Exportになります。

ただし便利である反面、いくつか制限事項がありますので利用の際にはご注意ください
- 実行はCoreもしくはFullplatform ユーザ
- Data Plus契約が必要
- 2億件未満のイベント結果を返す範囲であること
- 50億件未満のイベントが検索対象範囲であること
- アカウントごとに2つ以下の同時エクスポートができない
- 指定する時間は12時間以上前

また今回は例としてログをエクスポートしますが、実は一部のデータを除きログ以外のデータもエクスポート可能なので是非いろいろお試しください！
対象外データなど制約の詳細に関してはこちらの[ドキュメント](https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-historical-data-export/#limits-restrictions)をご参照ください

## 前提となる実行環境について
今回対象とするログは下記のように5000行を超えた過去の期間のログになります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/d4fe8742-3657-b2b7-aead-1cea429c90ce.jpeg" width=80%>

記事の中では3つの方法をご紹介しますので、環境に合わせてやりやすい方法を選択してください。
例として実行したNRQLは下記になります。

```
SELECT `hostname`,`message`,`log_summary` FROM Log WHERE allColumnSearch('error', insensitive: true) SINCE 1725116400000 UNTIL 1729868400000
```
NRQLは検索条件を設定しTimepickerで時間を設定した後に、NRQLボタンを押せば表示されますので、取り出したい条件のNRQLをゼロから作らなくても大丈夫です！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/7d5d7c6f-24aa-3d48-3df8-f75f91a6da9b.png" width=80%>


各スクリプトは<b>Mac(M1)</b>の Visual Studio Code 上で実行し、その結果を例として添付しています。


## Power Shell Core 版
元となるスクリプトの最新版は[こちら](https://github.com/pnvnd/newrelic-agent-reporting/blob/main/historical_export.ps1)をご参照ください
Power Shellが実行できる環境であれば、こちらのスクリプトを実行することが可能です。

スクリプトからの変更点は下記3点です
- 15行目 ユーザーAPIキー
- 16行目 データが照会されるアカウントID
- 18行目から 実行するNRQL

実行結果は下記の通りです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/a0a1b4d2-6299-df03-9533-47c5d0861757.png" width=80%>

このように実行したフォルダ上にマージされたCSVファイルがExportされます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/97121770-7a24-5112-074c-349007b20051.png" width=80%>


## PowerShell Alternative using 7zip 編
元となるスクリプトの最新版は[こちら](https://github.com/pnvnd/newrelic-agent-reporting/blob/main/historical_export_7z.ps1)をご参照ください
こちらは7zipを使って解凍する場合のスクリプトなので、もしこちらのスクリプトを使う場合はあらかじめ7zipをインストールしておいてください
7zipのダウンロードは[こちら](https://7-zip.org/download.html)

同様にスクリプトからの変更点は下記4点です
- 16行目 Windowsで実行される場合、7zip.exeのパスに合わせて変更してください
- 18行目 MacOSで実行される場合、16行目をコメントアウトし、7zzののパスに合わせて変更してください
- 21行目 ユーザーAPIキー
- 22行目 データが照会されるアカウントID
- 24行目から 実行するNRQL

実行結果は下記の通りです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/cd923929-9efb-9133-9a2f-ffc2256e7740.png" width=80%>

実行したフォルダ上に同様にマージされたCSVファイルがExportされます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/209ec82d-305b-5374-bf99-514417b1bac5.png" width=80%>


## Python 編
元となるスクリプトの最新版は[こちら](https://github.com/pnvnd/newrelic-agent-reporting/blob/main/historical_export.py)をご参照ください。
Pythonが実行できる環境で、こちらのスクリプトを実行してください。

同様にスクリプトからの変更点は下記3点です
- 8行目 ユーザーAPIキー
- 9行目 データが照会されるアカウントID
- 12行目から 実行するNRQL

実行結果は下記のとおりです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/637bc591-438b-e3b5-c390-e3686d9c5724.png" width=80%>

実行したフォルダ上に同様にマージされたCSVファイルがExportされます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/fc1d1b61-e72d-634d-8081-0e55a5486a23.png" width=80%>


スクリプトを実行すれば良いだけなので本当に簡単です！

## まとめ
トラブル対応など大量のログをExportして確認する必要があるケースなど、様々なユースケースに利用することが可能なHistorical Export機能を、スクリプト実行で手軽に活用していきましょう！


:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::
:::note info
[New Relic株式会社のQiita Organization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::