【えーぴーえむ】

APM(アプリ性能管理) とは?

最終更新:
💡 遅さやエラーを、計測した情報から調べる

アプリの性能を計測・監視・分析し、改善につなげる取り組み。応答時間・エラー・トレース、計測の範囲と時間の読み方を解説します。

📌 このページのポイント
APM:処理の経路と時間を見る架空の1リクエスト:全体は100ms0ms100msアプリ0〜100msDB50ms2070外部API15ms80〜95ms親と子の時間を足すと、二重に数える場合がある
DBの20〜70msと外部APIの80〜95msは、親の0〜100msに含まれます。長い処理は原因調査の手掛かりで、原因や改善効果の確定ではありません。
ひよこ ひよこ
APMは、アプリの何を見るの?
ペンギン先生 ペンギン先生
応答時間、エラー率、処理したリクエストの量などを計測・監視し、問題や性能の変化を調べる。CPUやメモリなどの情報も関係する。「インフラの数字」と「アプリの中身」は完全に別というより、組み合わせて原因を考えるよ。
ひよこ ひよこ
処理の途中で、どこが遅いかも分かる?
ペンギン先生 ペンギン先生
計測できていれば、トレースで処理の経路や時間を関連付けて調べられる。例えばアプリが呼んだDBや外部APIの処理を見る。OpenTelemetryでは、個々の作業をスパンとして記録し、親子関係などを使ってつなぐよ。
ひよこ ひよこ
エージェントを入れれば全部自動で分かる?
ペンギン先生 ペンギン先生
対応する言語やライブラリの処理を自動計測する方法も、SDKやAPIで自分の処理に計測を追加する方法もある。何が記録されるかは対応と設定次第だ。サービスをまたぐ経路をつなぐには、関連付ける情報を伝える仕組みも必要になる。
ひよこ ひよこ
DBの処理が長ければ、DBが原因?
ペンギン先生 ペンギン先生
長い処理は調査の手がかりだけど、待ち時間、負荷、要求の内容、接続先なども確認する。トレースだけで原因や、速くするべき箇所が確定するとは限らない。普段との差、エラーやほかの計測結果と合わせて考えよう。
ひよこ ひよこ
処理の時間を足せば、全体の時間になる?
ペンギン先生 ペンギン先生
親の処理時間に子の呼び出しが含まれる場合や、複数の処理が並行して進む場合がある。単純に全部足すと、二重に数えたり全体と合わなくなったりする。開始・終了と親子関係、待ち時間を見て読むことが大切だ。
ひよこ ひよこ
すべてのチームが導入すべき?
ペンギン先生 ペンギン先生
用途と必要な観測、運用の負担による。取得する情報の量や保存期間、費用、計測の負荷を確認する。トレースの一部を取得するサンプリングもある。導入だけで必ず元が取れるとは限らず、問題を見つけて対策し、その結果を確認する流れを考えよう。
もっと詳しく知りたい人へ

OpenTelemetry自体が、APMの画面を提供する?

OpenTelemetryはテレメトリーを生成・収集・出力するためのAPI、SDKやツールなどを提供します。表示・保存・検索・分析する基盤とは区別します。トレースの出力先にはCollectorや、オープンソース・提供者のバックエンドなどを選べます。

図の100msと50msを足して、150msになる?

図は架空の例です。アプリの0〜100msの処理の中に、20〜70msのDB呼び出しが含まれているため、100msと50msを足すと二重に数えます。子の処理の時間を取り除いた時間にも、計測していない処理や待ち時間があり、すべてCPUで計算していた時間とは限りません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「APM」って出てきたら「アプリケーションの性能を計測・監視・分析し、改善につなげる取り組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Application Performance Management / Monitoring」 = アプリケーション性能管理/性能監視
💬 APMはManagementとMonitoringの両方の呼び方があります。監視だけで終えず、問題の調査や性能改善につなげるという文脈でも使われます。

参考資料

← 用語集にもどる