ユーザー影響を把握しながらアプリケーションのエラー分析をしよう！

## はじめに
New Relicではアプリケーションでエラーが発生した際に、エラーの原因分析を効率よく行える機能としてErrors(Errors Inbox)という強力な機能があります。

Errors(Errors Inbox）はアプリケーションにNew Relic APM AgentやBrowser Agentが入っていると、エージェントがアプリケーションで発生したエラーをNew Relic上に収集してくれ、類似した複数のエラーをまとめて、発生件数が多いエラーから優先順位付けして対処を行ったり、エラーを特定の条件に絞り込んで、対処すべきエラーだけに集中することが出来ます。

エージェントが収集したエラーの情報を利用して効率的に分析できるため、ログを収集して一つ一つエラーを特定する旧来の方法が不要になり原因究明・修正までの時間を短縮できるようになるため、エンジニアの負担を軽減できるようになります。

今回、Errors(Errors Inbox)でより柔軟にエラー分析できるアップデートがありました！

本ブログでは、エラーをまとめる方法としてユーザーIDやメールアドレスなどアプリケーション依存のカスタムの属性でグルーピングする方法を説明します。

:::note info
この機能に関する詳細はこちら
[New Relic アップデート(2023年9月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202309 "New Relic アップデート(2023年9月)")
:::

## カスタム属性を使ったエラー分析
New RelicではAPMやブラウザのデータにカスタム属性（例: ユーザーのIDやメールアドレスなど)を付与することができるカスタム属性という機能がありますが、今回のErrors(Errors Inbox)のアップデートで、そのカスタム属性でもエラー分析ができるようになりました。例えば、アプリケーションの影響範囲を分析する上で、実ユーザーへの影響について知りたいケースがあると思いますが、カスタム属性を設定していると、今回のアップデート機能を利用することで迅速にエラーの影響を受けたユーザーを洗い出すことができるようになります。カスタム属性の設定方法は[公式ドキュメント](https://docs.newrelic.com/jp/docs/data-apis/custom-data/custom-events/collect-custom-attributes/#enabling-custom)や[こちらのブログ](https://newrelic.com/jp/blog/how-to-relic/php-application-custom-attributes-setup-and-usage "PHPアプリケーションのカスタム属性のセットアップと活用")を参考にしてください。


https://docs.newrelic.com/jp/docs/data-apis/custom-data/custom-events/collect-custom-attributes/#enabling-custom

https://newrelic.com/jp/blog/how-to-relic/php-application-custom-attributes-setup-and-usage

今回、カスタム属性としてuseridというキーでユーザーを一位に識別するキーを追加した例で説明します。

### APMでの見方
まずはAPMでカスタム属性を使って、どのようにエラー分析できるか見てみます。Errors(Errors Inbox)の「Group errors」のタブをクリックした先で、様々な属性情報（例えば、httpのステータスコードやリクエストのURIなど）でエラーを絞り込むことができます。今回のアップデートで検索条件でカスタム属性を選択できるため、今回はuseridというカスタム属性で絞り込んでみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/0807db36-99f0-f3e5-1736-a8bac3b893e5.png)
userId毎にエラーをフィルタリングをすることが出来たので、影響受けたユーザーがどれくらいいるのか、何のエラーで影響受けているのか迅速に把握することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/9b5bd77a-6a22-cc38-9821-fe358a3557a0.png)
フィルタリングでリストアップしたエラーをクリックすると、そのエラーの詳細分析を行える画面に遷移し、アプリケーションエラーの原因分析を行うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/1c827c42-456b-8772-6b49-77910c20dc9e.png)
「Filter by」でさらに検索結果を絞り込むこともできます。例では、特定userIdのエラーだけ見る形に絞り込んでいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/fb220453-3910-46eb-7fbd-4ed39a2397c1.png)


### Browserでの見方
Browserのjsエラーもカスタム属性でフィルタリングかけることができるようになりました。今回はカスタム属性のusernameでエラーをフィルタリングしてみます。APMのErros(erros inbox）と同様に「Group errors」のタブをクリックした先で、フィルタリングをかけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/1ebfa4ee-6a97-3ce2-2feb-6bde8306e9a6.png)
ユーザーが実際にどのエラーをフロントエンドのアプリケーションで受けたか、プロアクティブかつスピーディーに把握することができるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/b335f523-1036-ffbd-06a2-d44ae26a0500.png)
BrowserのErros(erros inbox）についてもエラーのより詳細分析を行うことが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/1ed16ce4-4450-03bb-05b0-bd58e3e83c6b.png)

## 最後に
本ブログでは、APMやBrowserのエージェントが自動に収集してくれたアプリケーションのエラーをカスタム属性を使って、Errors(Errors inbox）でエラー分析できるアップデートについて紹介させていただきました。
例えば、ユーザーから問い合わせがあった場合にこのuseridを使ってグルーピングすることにより、そのユーザがいつどのようなエラーを被ったか把握できます。その他、店舗IDを入れることで店舗ごとに問題の把握を行うということも出来るようになります。
Errors(Errors inbox)についてNew Relic社員が紹介している記事も参考になりますので、ぜひご覧下さい。

https://qiita.com/MarthaS/items/8d8e0dbd2390d9426776

https://qiita.com/T_OMORI/items/2ce9f7c77cf6232288e7

Errors(Errors inbox）とカスタム属性を組み合わせることで、アプリケーションエラーのユーザー影響範囲をスピーディーに把握した上で、エラーの分析を行い、対処を行うことができるようになります。結果、これまで調査に時間を要していたエンジニアの対応工数削減、修復時間の短縮に繋げていけます。また、ユーザーにヒアリングしないとエラーの詳細分析が出来ない運用から脱却して、プロアクティブにエラー分析ができますので、ぜひご活用ください！

:::note info
この機能に関する詳細はこちら
[New Relic アップデート(2023年9月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202309 "New Relic アップデート(2023年9月)")
[New Relic アップデート一覧](https://newrelic.com/jp/blog/nerdlog/new-relic-update)
:::
:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::
:::note info
[New Relic株式会社のQiita Organization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::