4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

私がAPMで見たいもの

Last updated at Posted at 2021-09-14

本旨

過去にとあるAPM(※)を使ったことがあり、また今の仕事でも使うことになったため、
私がAPMで何を確認したいかを書き出してみたいと思います。

※ APM・・・アプリケーション性能監視ツール

こんなのもあるよ、というご意見があると幸いです。

補足、注意事項

いわゆる定期報告のケースは現場によって大きく異なるため除き、障害などトラブルに焦点を絞ります。

私が知っているAPMは

  • Dynatrace
  • New Relic

です。

また、本稿は上記のいずれかにも捉われず、本質的に確認したいことを列挙していきたいと思います。

ケース1:障害解析<処理エラー>(原因究明)

シナリオ概要

ある日、処理エラーに関するエラー発報があり調査することになった。その原因を特定して解消したい。

APMで確認すること

確認したい要素 出ていて欲しい情報
どのサーバで発生したか サーバ名①
ロジックのどの箇所でエラー(Exception)が発生したか エラー発生ロジック名、行数、StackTrace②
エラーとなった際に処理しようとしたパラメータは表示されているか エラー出力ロジック内で指定したパラメータ(自前実装含)③

確認〜解消の仕方

  • アラートに記載のリンクからAPMにアクセスする
    • できれば当該エラーリクエストの詳細画面②に飛んで欲しい(できない前提で以下)
  • リクエスト一覧から、エラーリクエストを選択し②を確認する
  • エラーリクエストの詳細画面に出ている「出ていて欲しい情報」を確認する
  • ②に対応するソースコードを開き、③の情報と合わせて原因を特定する
    • 必要に応じてDBログや①のアクセスログを参照する
  • ①に対して緊急リリース・再起動等を行い解消する

ケース2:障害解析<処理エラー>(影響調査)

シナリオ概要

ある日、処理エラーに関するエラー発報があり調査することになった。その影響範囲を特定したい。

APMで確認すること

確認したい要素 出ていて欲しい情報
現在も継続してエラー発報しているか エラーレートのグラフ(X:時間, Y:エラー率)④
エラーは全てのサーバで発生しているか サーバ毎のエラーレートのグラフ④(上と同じ)
エラーは同じロジック箇所で必ず発生しているか エラー発生ロジック名、行数、StackTrace②
エラーが発生する処理データに法則性があるか エラー出力ロジック内で指定したパラメータ(自前実装含)③
サーバは正常な(負荷)状態か サーバのリソース情報⑤

確認〜解消の仕方

  • APMのダッシュボードを開く(④を含むものを作っておくこと)
  • ④からエラーが発生しているサーバのリクエスト一覧を開く
  • リクエスト一覧から、エラーリクエストを選択し②を確認する
  • 複数のエラーで②・③を確認し集計して影響範囲を検討する
  • ④にサーバに偏りがある場合は、サーバのOSログやアクセスログ、⑤を確認する

ケース3:障害解析<応答遅延>(原因究明)

シナリオ概要

ある日、応答遅延に関するエラー発報があり調査することになった。その原因を特定して解消したい。

APMで確認すること

確認したい要素 出ていて欲しい情報
遅延は全てのサーバで発生しているか サーバ×機能毎の応答時間のグラフ⑥
サーバは正常な(負荷)状態か サーバのリソース情報⑤
ロジックのどの箇所で遅延が発生したか エラー発生ロジック名、行数、StackTrace②
ロジックのStackTrace毎にどれくらい処理時間がかかっているか StackTrace毎の処理時間⑦
遅延が発生する処理データに法則性があるか ロジック内での出力ログ(自前実装含)、DBログと突合するためのDBアクセス時間⑧

確認〜解消の仕方

  • APMのダッシュボードを開く(⑥を含むものを作っておくこと)
  • アラートに記載されたサーバのリクエスト一覧を開く
  • リクエスト一覧から、エラーリクエストを選択し②を確認する
  • ⑦を確認して、平常時よりも大きくかかっている処理箇所を確認する
  • ⑥(⑤)でサーバに偏りがないか、⑧で処理対象データに法則性がないかなど総合的に検討し原因究明する
  • 遅延が発生しているサーバに対し、サーバ再起動や緊急リリース、あるいは静観等の対処を実施する

ケース4:障害解析<応答遅延>(影響調査)

シナリオ概要

ある日、応答遅延に関するエラー発報があり調査することになった。その影響範囲を特定したい。

APMで確認すること

確認したい要素 出ていて欲しい情報
遅延は全てのサーバで発生しているか サーバ×機能毎の応答時間のグラフ⑥
遅延が発生する処理データに法則性があるか ロジック内での出力ログ(自前実装含)、DBログと突合するためのDBアクセス時間⑧

確認〜解消の仕方

  • APMのダッシュボードを開く(④を含むものを作っておくこと)
  • ⑥から以下を確認する
    • どの機能(提供サービス)で発生したか
    • どれくらい(秒数)遅延したか
    • いつからいつまで発生していたか
  • ⑧から以下を確認する
    • 対象ユーザの範囲は全員か、特定の範囲か

最後に

ダッシュボードはカラフルだと綺麗なんですが、必要な情報だけに絞ったスマートさも追い求めていきたいですね。

4
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?