APM(Application Performance Monitoring)

アプリケーション性能監視

APMはアプリケーションのパフォーマンスと可用性を監視する手法。 分散トレース、エラー追跡、プロファイリング、リアルユーザー監視(RUM)などを統合し、 問題の根本原因を特定します。

APMの構成要素

分散トレース

リクエストがサービス間をどう流れるか追跡。 ボトルネックの特定、依存関係の可視化。

エラー追跡

例外、エラーを収集・グループ化。 スタックトレース、影響範囲の把握。

プロファイリング

CPU、メモリ使用の内訳。 どの関数が遅いか、メモリリークの検出。

RUM(Real User Monitoring)

実際のユーザー体験を計測。 ページロード時間、Core Web Vitals。

APMが解決する問題

「なぜこのリクエストは遅いのか?」

→ 分散トレースで各サービスの処理時間を可視化。DBクエリが遅い、外部API待ちなど特定。

「このエラーはどこで発生している?」

→ エラー追跡でスタックトレース、発生頻度、影響ユーザー数を把握。

「デプロイ後にパフォーマンスが劣化した?」

→ デプロイマーカーと連携し、前後のレイテンシ・エラー率を比較。

「サービス間の依存関係は?」

→ サービスマップで呼び出し関係、レイテンシ、エラー率を可視化。

主要APMツール

Datadog APM

フルスタックの可観測性プラットフォーム。メトリクス、ログ、トレースを統合。 自動計装、サービスマップ、RUM対応。

特徴: 統合UI、豊富なインテグレーション、SaaS

New Relic

APMの老舗。Full-Stack Observability。エージェントベースの自動計装。 無料枠あり(100GB/月)。

特徴: 成熟したエコシステム、NRQL(独自クエリ言語)

Dynatrace

AI駆動の自動検出。OneAgent一つで全てを監視。 根本原因分析(Davis AI)が強み。

特徴: AI/ML、自動発見、エンタープライズ向け

Elastic APM

ELK Stackと統合。オープンソース(Basic)とマネージド(Elastic Cloud)。 既存のElasticsearch環境に追加しやすい。

特徴: ELK統合、セルフホスト可能

OSS vs SaaS

OSS(セルフホスト)

  • Jaeger: 分散トレーシング
  • Zipkin: 軽量トレーシング
  • SigNoz: DatadogのOSS代替
  • Grafana Tempo: トレースストレージ

メリット: コスト、データ主権、カスタマイズ

SaaS(マネージド)

  • Datadog: フルスタック
  • New Relic: APM特化
  • AWS X-Ray: AWS統合
  • GCP Cloud Trace: GCP統合

メリット: 運用不要、スケール、サポート

OpenTelemetry(OTel)

ベンダー非依存のテレメトリ標準。トレース、メトリクス、ログを統一的に収集。 CNCFプロジェクト。どのAPMツールにも送信可能。

OpenTelemetryアーキテクチャ

App + SDK
OTel Collector
Backend
(Jaeger/Datadog/...)

SDK

アプリに組み込み。自動/手動計装。

Collector

データ収集・変換・エクスポート。

Protocol (OTLP)

標準転送プロトコル。gRPC/HTTP。

SRE/インフラ観点

導入のポイント

  • サンプリング: 全トレースを保存するとコスト爆発。1-10%が目安
  • 計装: 自動計装から始め、必要に応じて手動計装を追加
  • コンテキスト伝播: 全サービスで一貫して実装

コスト管理

  • • トレースは高コスト(スパン数 × 属性数)
  • • エラーのみ100%保存、正常は低サンプリング
  • • 保持期間を短く(7-14日)

詳細トピック