はじめに
私が所属しているチームではNew Relic APMを利用しており、SLAレポートでユーザ満足度を測るようにしております。
ただし、各アカウントのサービス利用状況によってサービスの利用体験に差異がありそうなのは明白だったので、アカウント毎にApdexを算出できるようにしたいと考えておりました。
今回はNew Relic APMに対してカスタム属性としてアカウント情報を付与し、NRQLを用いてアカウント単位でApdexをダッシュボード化した話をお話します。
New Relic APMのカスタム属性
New Relicではカスタム属性を付与することで通常収集される情報に加え任意の情報を付与することが出来ます。
私達のチームではrailsを使用しております。今回は ApplicationController
の before_action
でカスタム属性としてアカウントIDとユーザIDなどのアカウント情報を付与するようにしました。
こうすることで各リクエストに対してアカウント情報を付与した形でNew Relic APMに返すことが出来ました。
class ApplicationController < ActionController::Base
~~
before_action :add_custom_attributes
~~
def add_custom_attributes
::NewRelic::Agent.add_custom_attributes({
user_id: current_user&.id,
account_id: current_user&.account&.id,
})
end
~~
New Relic APMよりカスタム属性を確認
以下のようにNew Relic APMのトランザクション情報を見るとカスタム属性として追加したアカウント情報が付与されていることが確認できます。
NRQLよりカスタム属性を確認
以下のようにNew Relic APMで取得した情報をNQRLで抽出し、そのなかにカスタム属性として追加したアカウント情報が付与されていることが確認できます。
アカウント毎にApdexを算出
以下のようなNRQLを組むことでアカウント単位にApdexが表示されることを確認しました。
New Relicのアラート通知にアカウント情報を付与
我々のチームではNew Relic APMから取れるメトリクスに対してSlackでアラート通知など行っております。
Slack通知に対してアカウント情報を付与することでどのアカウントに対してどういう影響があったのかをパット見ですぐわかるようにしております。
まとめ
今回はNew Relic APMに対してアカウント情報を付与し、アカウントごとのApdexをNRQLで可視化するところを紹介しました。
我々のチームではNew RelicのAPI機能を使って外部データソースにデータ転送し、各アカウントごとの満足度などを可視化するダッシュボードの要素の1つとして利用しています。この話は機会があればまた今度。
短いですが、今回は以上となります。それでは!