New Relic に取り込まれたデータ量を把握したい

New Relic を使っていて、使用データ量が想定していたより大きいと感じることがありました。
何が容量を喰っているのかを調査するために公式ドキュメントをベースに調べた内容をまとめます。
New Relic ほぼ初見の人間が模索した結果です。

# ドキュメント

- Data and APIs / Manage data
	- まずはここから
	- [New Relic data management hub \| New Relic Documentation](https://docs.newrelic.com/docs/data-apis/manage-data/manage-your-data/)
- [Estimate Your Data Ingest Costs \| New Relic](https://newrelic.com/blog/nerdlog/estimate-data-cost)
	- 使用量の見積もり手法
	- 費用算出用のスプレッドシートへのリンクも有り
- Account & user management / Billing and Usage
	- [Billing and usage UI \| New Relic Documentation](https://docs.newrelic.com/docs/accounts/accounts-billing/new-relic-one-pricing-billing/billing-ui/)
	- 請求周りの情報
- Data ingest governance
	- [Introduction to our data ingest governance series \| New Relic Documentation](https://docs.newrelic.com/docs/new-relic-solutions/observability-maturity/operational-efficiency/intro-data-governance/)
	- データ取り込みの仕様や考え方など

> We invite you to send all your metrics, events, logs, and traces to NRDB, including those from third-party sources.

曰く、全てのデータを取り込む事が推奨とあります。
理解はできるのですが、「でもお高いんでしょう」にならぬよう、不要なデータの取り込みは避けて行きたい所です。

# Manage your data

使用量の把握のため最も頻繁に利用する機能になると思います。
ユーザメニュー ( [Account settings \| New Relic Documentation](https://docs.newrelic.com/docs/accounts/accounts-billing/general-account-settings/intro-account-settings/) ) の "Manage your data" から表示できます。
ドリルダウンも出来、一通り知りたい情報が取得できると思います。

# pre-built dashboards

事前定義ダッシュボードに使用量把握に役立つ物が用意されています。

## 導入方法

- Dashboard
	- "Add data"  -> "Dashboards"
	- もしくは、 "Dashboards" -> "Create a dashboard" -> "Browse pre-built dashboards" から
	- ![20221206_newrelic_analyze_data_ingest_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/5031c781-8c53-1f58-e680-e8d72de60969.png)
- QuickStart ( [Instant Observability \| New Relic Instant Observability](https://newrelic.com/instant-observability/) )
	- 関連する Dashboard、Alert、インストールドキュメントのリンクが含まれている
	- ソースは GitHub に公開されている
		- [newrelic/newrelic\-quickstarts](https://github.com/newrelic/newrelic-quickstarts)

ドキュメントの Data ingest governance では "[OMA Data Ingest Governance](https://newrelic.com/instant-observability/oma-data-governance)" について記載されています。
他に、Integration 別に着目したダッシュボードを作成できる "[Infrastructure Integrations Data Analysis](https://newrelic.com/instant-observability/infrastructure-integrations-data-analysis)" も活用できそうです。

## OMA Data Ingest Governance (導入例)

ドキュメント記載通り "OMA Data Ingest Governance" を導入してみます。
と言っても QuickStart の詳細画面に飛び、Install ボタンを押すだけです。
![20221206_newrelic_analyze_data_ingest_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/9d2c9cc4-6602-ef64-89f5-67a4e756b18d.png)
![20221206_newrelic_analyze_data_ingest_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/9405c76c-0fa0-8bc0-c322-828cea0771db.png)

"See your data" を押下すると、導入したダッシュボードの一覧が見れます。という事なのでしょうが、空だったのはご愛嬌。
![20221206_newrelic_analyze_data_ingest_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/7956ab6a-1299-9968-d837-be8fcc661546.png)

リンクの Filter が異なっているだけで、適切な Filter にすると作成されている事が確認できます。
![20221206_newrelic_analyze_data_ingest_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/6c79d25d-b7de-061b-1209-956e9fb1198b.png)

様々なグラフが多岐に渡り設定されており、一つ一つクエリを実行して確認する手間が省けます。
複数の New Relic アカウントを利用している場合に特に役立つのではと感じました。

# ユーザ定義ダッシュボード

事前定義以外にも使用量把握に役立つダッシュボードの作り方やクエリの例がドキュメントに記載されています。
料金プランにより異なってくるからなのか事前定義ダッシュボードは無いようです。

- [Ingest Resource Request Per Minute](https://docs.newrelic.com/docs/data-apis/manage-data/query-limits#create-a-dashboard-to-view-your-limit-status)
	- システム制限の把握
- [NrAuditEvent event data](https://docs.newrelic.com/docs/data-apis/understand-data/event-data/nrauditevent-event-data-query-examples/)
	- データ量には直接紐付かないが、監査イベント把握
- [Query and alert on usage data \| New Relic Documentation](https://docs.newrelic.com/docs/accounts/accounts-billing/new-relic-one-pricing-billing/usage-queries-alerts#billable-full-platform-users-for-the-month)
	- データ使用量の把握
- [Baseline your data ingest \| New Relic Documentation](https://docs.newrelic.com/docs/new-relic-solutions/observability-maturity/operational-efficiency/data-governance-baseline-ingest-guide)
	- データタイプ毎の使用量の把握

## 作成例

ドキュメントの内容を基に作成してみたダッシュボードのJSONは以下になります。
[Gist: NewRelic-Dashboard-ManageDataAdditionalInformation.json](https://gist.githubusercontent.com/htnosm/bddede2c4170d784986c83e40434e5ab/raw/5aa938fb17e9e911a8c3c5c150fa40580a0643b5/NewRelic-Dashboard-ManageDataAdditionalInformation.json)

`__NEW_RELIC_ACCOUNT_ID__` 部分を [Account ID](https://docs.newrelic.com/docs/accounts/accounts-billing/account-structure/account-id/) に書き換えて、import dashboard からインポートを行えます。
Account ID は URL `?account=9999999` 部分からも取得できます。
![20221206_newrelic_analyze_data_ingest_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/0dd06897-3f89-98d5-0c5f-164c1c589bb8.png)
![20221206_newrelic_analyze_data_ingest_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89680/ffda79d6-7e77-b607-4e83-fc569a10a352.png)

尚、Dashboard は Web UI での Export/Import が行えますが、Alert condition や policy は標準機能としては提供されていないようです。

# 取り込み量の最適化

使用量を把握し、意図しない増加となっている箇所を探し当てたら、データ量の調整を行うことになります。
取り込み方法別に調整手法が詳しく記載されています。

[Optimize your data ingest \| New Relic Documentation](https://docs.newrelic.com/docs/new-relic-solutions/observability-maturity/operational-efficiency/data-governance-optimize-ingest-guide/#optimization-through-configuration)

# 余談

公式ドキュメントを読んでいると高確率で迷子になります。(個人の感想です)
リンクを踏むとギュインとスクロールする動きに違和感を持ってしまうので、多分その影響なのかと思っています。