New RelicのEventをMetricに変換して保存期間を延長してみよう

本記事は [New Relic Advent Calendar 2022](https://qiita.com/advent-calendar/2022/newrelic) 2日目のエントリーです:christmas_tree::santa::gift:

New Relicを使った運用を長く続けていると、過去のデータを振り返りたくなる事はありませんか？

実は事前にちょっとした手間をかけておかないと、 **時既に遅し:sushi:** な事があるんです。
今回はそんな時に泣かないで済むようなTipsをご紹介します。

## EventをMetricに変換し保存期間を13ヶ月に延長する

New Relicには、俗に **MELT**[^1] と呼ばれる4種類のテレメトリーデータタイプが存在しており、それぞれの保存期間はデータ特性に合わせる形で異なっています。

性能分析やトラブルシューティングでよく参照するAPMやBrowser等のデータは、詳細な情報を記録するために用いられる **Event[^2]** として記録されるため、データ保存期間は基本的に短め[^3]に設定されています。

このEventを、**Metricに変換**し集計データとして保存しなおすことで、長期的な傾向分析に用いられるデータとして参照できるようにします。

EventをMetricに変換するには、2つの方法があります。
1. [E2M(Events to Metrics)](https://newrelic.com/jp/blog/nerdlog/product-announcements-metrics-service)を使ってNRQL経由で設定する方法
1. [Metric Aggregator](https://newrelic.com/jp/blog/how-to-relic/analyze-long-term-trends-with-metric-aggregator)を使ってGUI経由で設定する方法

今回はこの2つの方法のうち、より簡単な **Metric Aggregator** を使った変換方法をご紹介します。

## Metric Aggregator is 何？
Metric Aggregatorは、E2Mのルール作成を支援する New Relic One アプリケーション(Apps)です。

AppsからMetric Aggregatorを有効化し、集計Ruleを定義することで誰でも簡単にEventをMetric変換することが可能となります。

手順は以下の2点です。

## 1.Metric Aggregatorを有効化する

Apps > Go to New Relic I/O > **Metric Aggregator** をクリックします。
![Add_data___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/0006e87f-cef9-b459-6c46-fceabbd0fb16.png)
**Add This app** をクリックします。
![New_Relic_One_catalog___Add_data___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/b40570e3-3551-466d-2d7d-8c0b3020703a.png)
有効化するアカウントIDのチェックボックスを選択し、**Update n Accounts**をクリックします。
![New_Relic_One_catalog___Add_data___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/69b2ba9d-a0ee-0359-eecb-a9289b91323c.png)
Appsの画面に戻り**Metric Aggregator**をクリックします。
![App_Directory___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/d0b449e0-e5a0-e61e-bf39-8b166a9c1ed5.png)
**Enable**をクリックします。
![Metric_Aggregator___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/664b3dca-bf84-0773-22f8-c1db5c40e441.png)
これで有効化は完了です。
※Appsは管理者が全ユーザに対して一括で有効化するものではなく、ユーザ自身が設定する必要があります（無料なので気にせずやってしまいましょう

## 2.Metric AggregatorにRuleを追加する
Metric AggregatorにMetric変換ルールを追加する手順です。
まず **Create Rule**をクリックします。
![Metric_Aggregator___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/ba672946-3ad6-7a04-0ae0-4708b852b57f.png)
Rule作成画面が表示されるので、条件を入力していきます。
![Metric_Aggregator___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/8dc59a82-8048-ef6d-a400-13dd029b0a6e.png)

1. Define your rule : ルールを定義します。
    - Select an account
      - プルダウンから対象のNew Relicアカウントを選択します。
    - Select an event to base your metric off of
      - Metric変換対象のEvent[^2]を選択します。
    - Select your query function : どの関数で集計するかを選択します。
      - Summary (min、max、sum、count、または averageの場合)
      - Distribution (percentile または histogram)
      - Unique Count (count)
    - Select the attribute for your metric
      - どの値をMetricにするかを選択します。
    - Narrow the scope 
      - 値の範囲を指定します(NRQLのWHERE句相当)。
    - Select additional attributes to facet on the metric
      - グルーピング(FACET)する条件を選択します。
1. Name and describe your new rule ：新しいルールに名前をつけます。
    - Metric name : 新しいmetricに名前をつけます（特にこだわりがなければ `Use suggested name`をクリック)。
    - Rule alias : Ruleにエイリアスをつけます（特にこだわりがなければ `Use suggested name`をクリック)。
    - Rule description : このRuleの説明文を入力します。
1. Create Rule
    - 入力項目はないので内容が問題なければ `Create Rule` をクリックします。

Metric Aggregatorの画面に先程追加したルールが表示されていれば成功です:tada::tada::tada:
![Metric_Aggregator___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/bedfa02a-8892-9c19-7fbe-4c14a7aedf09.png)
簡単ですね！


## 確認
追加したルールIDをクリックすると、右側にExample queryが表示されます。
![Metric_Aggregator___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/05c6f285-a37b-3a6f-8f02-f59ede7f9082.png)
これをQuery builderに貼り付けてみましょう
![Query_your_data___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/2b2d1e4e-2085-3dc9-c812-b18dc5a21deb.png)
出ましたね！

以下はサンプルです。
![Query_your_data___New_Relic_One.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/bdd3b4cf-e0d0-4011-50e8-4d022166c443.png)
こんな感じで、長期的にデータを振り返ることができるようになりました！

## 番外編：Metric AggregatorのRule削除/更新
現状、Metric AggregatorのUI上で**一度作ったRuleは、STATUSのON/OFFは可能ですが、更新や削除はできない仕様**となっています。 
なので、同一のMetricで設定内容を変更したい場合、[NerdGraph API explorer](https://api.newrelic.com/graphiql)という機能を使い**GraphQLのクエリを叩いて既存ルールを削除し、新規Ruleとして再度追加**する必要があります。
公式ドキュメントに[削除用のサンプルクエリ](https://docs.newrelic.com/docs/data-apis/convert-to-metrics/analyze-monitor-data-trends-metrics/#delete)がありますので参考にして削除を実施しましょう。
![削除実行サンプル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38574/a6e1613c-4f20-1e03-3aa8-172232cc09ce.png)

## まとめ
いかがでしたでしょうか？

例えば1週間等の短いスパンで定期的にデータを確認していると、
- 緩やかなパフォーマンスの劣化
- 週の切れ目のタイミングでデプロイされた処理の影響

のような事象に気付けないことがあります。
そんな時に備え、重要な指標をいつでも長期的な分析が可能な状態にしておいて、
たまに長いスパンでデータをみる習慣を付けておくと、今まで気づけなかった変化に対応できることがあるかもしれません。

ちなみに、APM系の主要データはNew Relic側でMetric化してくれているので、その他のEventから長期的に残したい値がないか一度ご確認いただくのをおすすめします（CoreWebVitals系とか？）

以上、ちょっとしたTipsですがこの記事が少しでも皆様のお役に立てば幸いです。

## ちょっとだけ宣伝
New Relicユーザー主体で勉強会等のイベントを不定期で開催している
**NRUG(New Relic User Group)：通称ぬるぐ** というユーザーグループの存在をご存知でしょうか？

https://nrug.connpass.com/

https://nrug-sre.connpass.com/

気になる方は是非、上記connpassや[NRUG Slack](https://join.slack.com/t/nrug/shared_invite/zt-y0de03za-0vCEQdEoGjKXoOrdrHlRzA)へご登録いただき、最新情報をチェックしていただければと思います！

直近の予定はこんな感じです

**12/14(水) NRUG Vol.5 Day1 1周年だよ！全員集合！！** https://nrug.connpass.com/event/265357/
**12/15(木) NRUG Vol.5 Day2 交流会:beer:** https://nrug.connpass.com/event/266747/
**?/? NRUG SRE支部 Vol.3 来年春頃までにはやりたいw**

それでは皆様、New Relicを使い倒してより良いo11yライフをお過ごしください:wave:




## 参考

https://docs.newrelic.com/jp/docs/data-apis/understand-data/new-relic-data-types/

https://docs.newrelic.co.jp/docs/data-apis/understand-data/event-data/default-events-reported-new-relic-products

https://newrelic.com/jp/blog/how-to-relic/analyze-long-term-trends-with-metric-aggregator

日本語字幕で見るのがオススメ
<iframe width="560" height="315" src="https://www.youtube.com/embed/2nF_UnKX18c" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

[^1]:MELT=Metric/Event/Log/Traceの頭文字をとった略称。詳細はNew Relicのドキュメントをご確認ください→[New Relicデータタイプ：メトリクス、イベント、ログ、トレース（MELT）](https://docs.newrelic.com/jp/docs/data-apis/understand-data/new-relic-data-types/)
[^2]:Eventの詳細はNew Relicのドキュメントをご確認ください→[Default events reported by New Relic products](https://docs.newrelic.co.jp/docs/data-apis/understand-data/event-data/default-events-reported-new-relic-products)
[^3]:データ保管期間は契約内容によって異なります。実際の保持期間は `Administration > Data management > Data retention` から確認可能です。