【えーぴーえむ】
APM(アプリ性能管理) とは?
最終更新:
💡 遅さやエラーを、計測した情報から調べる
アプリの性能を計測・監視・分析し、改善につなげる取り組み。応答時間・エラー・トレース、計測の範囲と時間の読み方を解説します。
📌 このページのポイント
- アプリの応答時間・エラー率・処理量などを監視・分析する
- トレースは、処理の経路と時間を関連付けて調べる手段
- 自動計測と、コードに計測を追加する方法がある
- 長い処理が見えても、原因や改善効果は検証が必要
APMは、アプリの何を見るの?
処理の途中で、どこが遅いかも分かる?
計測できていれば、トレースで処理の経路や時間を関連付けて調べられる。例えばアプリが呼んだDBや外部APIの処理を見る。OpenTelemetryでは、個々の作業をスパンとして記録し、親子関係などを使ってつなぐよ。
エージェントを入れれば全部自動で分かる?
DBの処理が長ければ、DBが原因?
長い処理は調査の手がかりだけど、待ち時間、負荷、要求の内容、接続先なども確認する。トレースだけで原因や、速くするべき箇所が確定するとは限らない。普段との差、エラーやほかの計測結果と合わせて考えよう。
処理の時間を足せば、全体の時間になる?
親の処理時間に子の呼び出しが含まれる場合や、複数の処理が並行して進む場合がある。単純に全部足すと、二重に数えたり全体と合わなくなったりする。開始・終了と親子関係、待ち時間を見て読むことが大切だ。
すべてのチームが導入すべき?
用途と必要な観測、運用の負担による。取得する情報の量や保存期間、費用、計測の負荷を確認する。トレースの一部を取得するサンプリングもある。導入だけで必ず元が取れるとは限らず、問題を見つけて対策し、その結果を確認する流れを考えよう。
もっと詳しく知りたい人へ
OpenTelemetry自体が、APMの画面を提供する?
OpenTelemetryはテレメトリーを生成・収集・出力するためのAPI、SDKやツールなどを提供します。表示・保存・検索・分析する基盤とは区別します。トレースの出力先にはCollectorや、オープンソース・提供者のバックエンドなどを選べます。
図の100msと50msを足して、150msになる?
図は架空の例です。アプリの0〜100msの処理の中に、20〜70msのDB呼び出しが含まれているため、100msと50msを足すと二重に数えます。子の処理の時間を取り除いた時間にも、計測していない処理や待ち時間があり、すべてCPUで計算していた時間とは限りません。
📖 おまけ:英語の意味
「Application Performance Management / Monitoring」 = アプリケーション性能管理/性能監視
💬 APMはManagementとMonitoringの両方の呼び方があります。監視だけで終えず、問題の調査や性能改善につなげるという文脈でも使われます。