3
2

More than 1 year has passed since last update.

New RelicのAPMエージェントを使ってエラーのユーザーへの影響度合いを計測してみた

Last updated at Posted at 2023-08-21

概要

 New RelicのErrors Inboxは、カスタム属性を活用することでエラーの影響を受けているユニークユーザー数を簡単に確認することが可能です。またその値を元にしたユーザーへの影響度を基準としてエラーグループをランキング形式で表示してくれるため、対応の優先順位付けが容易になります。
 今回のアップデートではこれまで使用してきたカスタム属性を設定するAPIを使用せずにユーザーを識別するIDを設定する方法が提供されました。

このアップデートの詳細はこちら。
New Relic アップデート(2023年3月)
New Relic アップデート一覧

では実際にやっていきましょう。

設定手順

 Javaアプリケーションを例に紹介します。ユーザーを識別するIDの設定は非常に簡単です。
まずはドキュメントを確認していきましょう。

Java
setUserId(java.lang.String userId)

この関数にユーザーを識別するIDを設定することでTransactionイベントにカスタム属性enduser.idが追加される仕様です。

実際にこの関数を使ってみましょう。

JavaでsetUserIdを使用する
import com.newrelic.api.agent.NewRelic;

@Controller
public class XXXXXXXXXController {
    @RequestMapping("/XXXXXXXXX")
    public String xxxxxxxxx(...) {
    ... ( コントローラのロジック )
    NewRelic.setUserId(userid);
    ...
    }
}

 これでTransactionイベントにカスタム属性enduser.idが設定されます。そしてこのトランザクションの中でエラーが発生した場合には、UserImpactedとしてユニークユーザー数がカウントされるようになります。

確認

 それでは設定されていることを確認していきましょう。

カスタム属性enduser.idがTransactionイベントに設定されている

 まずは、Transactionイベントにenduser.idが設定されていることを確認します。アプリケーション名appNameとカスタム属性enduser.idでグループ化してトランザクションの数を取得するNRQLを使っていきます。

NRQL
SELECT count(*) 
FROM Transaction 
FACET appName, enduser.id SINCE 1 day ago

NRQL_enduserid.png
 Enduser.Idの列に今回設定したuseridが設定されていることが確認できました。

Errors(errors inbox)のTriageタブでUserImpactを確認

 それではエラーが発生した際のユーザーへの影響度(UserImpact)がErrors(errors inbox)のTriageタブに表示されていることを確認していきましょう。
 New Relic APMの画面でメニューからErrors(errors inbox)を開きます。
UserImpact_APM.png
 エラーグループの一覧のUsersの列にUserImpactが表示されています(赤枠)。エラーの詳細画面で属性値も確認してみましょう。
user impact_detail.png
 左のパネルにはOccurrencesにエラーが発生した件数を時系列のチャートで表示しています。そしてそのチャート上でUsers Impactedがユニークユーザー数を表現しています。
 右のパネルのOccurrencesタブでエラーに関連するスタックトレースや分散トレーシング、ログ、属性値が確認できます。今回追加したカスタム属性enduser.idAttributesの一覧で設定された値が確認できます。

エラーの影響を受けるユーザーの数をNRQLで取得

 エラーグループの影響を受けるユーザーの数は、newrelic.error.group.userImpactという名称のメトリックデータとして記録されます。

UserImpact を取得するNRQL
SELECT uniqueCount(newrelic.error.group.userImpact) 
FROM Metric 
WHERE metricName='newrelic.error.group.userImpact'

  newrelic.error.group.userImpactは、Errorsでグループ化されたエラーグループのerror.group.guid とエラーが検出しているAPMのentity.guidでグループ化できます。
NRQL-UserImpact.png
 このNRQLを活用するとエラーの影響を受けるユーザーの数に閾値を設定してアラートをトリガーすることが可能です。

まとめ

 New RelicのErrors Inboxの最新アップデートにより、ユーザーへのエラーの影響度を簡易に把握できるようになりました。Javaアプリケーションでの設定手順を紹介しましたが、APM(Go、 .Net、 Node.js、 Python、 Ruby)、Browser、 MobileでもsetUserの関数からenduser.idの設定が可能です。こちらのドキュメントで詳細が確認できます。ぜひアプリケーションの環境に合わせてご利用ください。

このアップデートの詳細はこちら。
New Relic アップデート(2023年3月)
New Relic アップデート一覧

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2