New Relicでパフォーマンス改善やエラー対応の成果を可視化する

この記事はNew Relic 使ってみた情報をシェアしよう! by New Relic Advent Calendar 2022 10日目の記事です。

株式会社リゾーム 技術部 システム開発第3グループの廣江です。

弊社では、現在稼働しているアプリケーションのパフォーマンス改善やエラーの修正を効率よく発見・修正するために、最近New Relicを導入しました。また、その中でシングルテナントでアプリケーションを提供しているものがあり、シングルテナントでNew Relicを導入しているケースも少なかろうということでアドベントカレンダーに参加してみることにしました。

シングルテナントで複数のアプリケーションを登録しているため、若干特殊なNRQLかもしれません。ご了承ください。

パフォーマンス改善・エラー修正

アプリケーションを長らく運用していると、パフォーマンスの劣化やエラーの発生はどうしても避けては通れない話になります。しかし、明らかなコスト削減につながる場合かクリティカルな不具合である場合を除いてどうしても優先度が落ちてしまい、メンバーそれぞれの個人努力によって少しずつ解消される(もしくは長らく放置される)というのが現実です。

調査コストは随分減った

パフォーマンスの悪い箇所やエラーの発見はNew RelicのAPM & servicesErrors inboxを使うことでとても簡単になりました。使用頻度を加味したパフォーマンスの悪い箇所ランキングを表示してくれるため、素直に上から対応していくだけでパフォーマンス改善につながりますし、エラーも発生箇所から、原因や関連するクライアントの環境やユーザーの情報まで全部辿れるので、原因が特定しやすくなり、対応チケットの作成は以前と比べ比較的容易になりました。

作成されたチケットに対応するモチベーションを高める

パフォーマンス改善やエラー修正のチケットに対応するにあたって、後回しにしないようモチベーションを高く保って対応していきたいです。そこで、どうすればモチベーションを高められるか考えました。この辺りはどうしても個人差があると思いますが、私の場合は単純で承認欲求が満たされるとモチベーションが高まります。成果を可視化し、目に見える形でエラー量を減らして報告するとチームメイトから感謝され、次のチケットも対応しようという気持ちになります。

成果の可視化

さて、この辺りから本題になるのですが、今回はNew Relicのダッシュボードを使って成果を可視化できるパネルを作成します。パフォーマンスに関してはAPMを見れば数値やグラフが詳細に出てくるのですが、シングルテナントで提供しているためそれぞれの環境では確認できても全部まとめて確認というのができません。全ての環境をひとまとめにして、だいたいこれくらい成果が出たというのをわかりやすく表示させます。

パフォーマンスやエラー数の推移をStacked Barで週ごとに表示させます。

SELECT average(apm.service.overview.web) * 1000 FROM Metric WHERE (appName != "") FACET segmentName LIMIT MAX SINCE 1 year AGO TIMESERIES 1 week

SELECT count(*) FROM ErrorTrace FACET error.message SINCE 1 year ago TIMESERIES 1 week
SELECT COUNT(*) FROM JavaScriptError FACET errorMessage SINCE 1 year ago TIMESERIES 1 week

これで、対応すればするほどその成果がグラフに表れてくるはずですので、対応してはグラフを眺めて「成果が出てるな」と実感しながらまた次の対応へ臨むことができます。まだ始めたばかりなので成果の出たグラフをお見せできませんが、これから頑張っていきます。

最後に

New Relicはサポートがとても充実しており、「こういうことがやりたいんだけど、どうやるのかな」といったことがあっても、相談するとすぐにアイデアをいくつか提供していただけるため、今ではとても便利に使わせてもらっています。どう便利に使っているかの話は別のメンバーが、後日記事にしてくれると思いますので、そちらを見ていただけますと幸いです。

今回はNew Relicビギナーによる、ちょっと変わった目的でのダッシュボード利用のアイデアについてお話しさせていただきました。まだまだ勉強中ですので、アドベントカレンダーの皆様の記事を拝読しつつ、さらに使いこなせていけるように頑張っていきます。