オブザーバビリティ
システムの内部状態を外部から観測可能にし、問題の原因を迅速に特定するための仕組み
運用オブザーバビリティ
オブザーバビリティとは
オブザーバビリティ (Observability) は、システムの内部状態を外部から観測可能にし、「なぜ問題が起きたか」を迅速に特定するための仕組みである。モニタリングが「既知の問題を検知する」のに対し、オブザーバビリティは「未知の問題を調査する」能力を提供する。
3 つの柱
3 つの柱を以下にまとめる。
| 柱 | 説明 | AWS サービス |
|---|---|---|
| ログ (Logs) | イベントの詳細な記録 | CloudWatch Logs |
| メトリクス (Metrics) | 数値データの時系列 | CloudWatch Metrics |
| トレース (Traces) | リクエストの経路追跡 | X-Ray |
ログ
ログのコード例を示す。
// 構造化ログ (JSON)
console.log(JSON.stringify({
level: 'ERROR',
message: 'Failed to process order',
orderId: '123',
error: err.message,
timestamp: new Date().toISOString(),
}));
構造化ログ (JSON) にすることで、CloudWatch Logs Insights でクエリできる。
-- CloudWatch Logs Insights
fields @timestamp, orderId, error
| filter level = 'ERROR'
| sort @timestamp desc
| limit 20
メトリクス
メトリクスのコード例を示す。
// カスタムメトリクスを CloudWatch に送信
await cloudwatch.putMetricData({
Namespace: 'MyApp',
MetricData: [{
MetricName: 'OrderProcessingTime',
Value: duration,
Unit: 'Milliseconds',
Dimensions: [{ Name: 'Environment', Value: 'prod' }],
}],
});
トレース (X-Ray)
トレース (X-Ray) を図で示す。
[API Gateway] → [Lambda A] → [DynamoDB]
→ [Lambda B] → [SQS]
X-Ray トレースマップ:
API Gateway (50ms) → Lambda A (120ms) → DynamoDB (30ms)
→ Lambda B (80ms) → SQS (10ms)
合計: 170ms
X-Ray はリクエストがどのサービスを通過し、どこで時間がかかっているかを可視化する。
モニタリング vs オブザーバビリティ
モニタリングとオブザーバビリティの違いを以下にまとめる。
| 観点 | モニタリング | オブザーバビリティ |
|---|---|---|
| 目的 | 既知の問題を検知 | 未知の問題を調査 |
| アプローチ | ダッシュボード + アラート | ログ + メトリクス + トレースの相関分析 |
| 質問 | 「CPU 使用率は正常か?」 | 「なぜこのリクエストが遅いのか?」 |
理論と実装の両面から学ぶなら関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
ログ集約
分散システムの複数サービスから出力されるログを一元的に収集・検索・分析する仕組み
CloudWatch
AWS のモニタリング・ログ管理サービスで、メトリクス収集、ログ分析、アラートを提供する
ヘルスチェックパターン
サービスの稼働状態を定期的に確認し、異常を検知したらトラフィックを切り離す仕組み
テレメトリ
システムの状態をメトリクス、ログ、トレースの 3 本柱で収集・送信する仕組み
Lambda Powertools
Lambda 関数の構造化ログ、分散トレーシング、カスタムメトリクスを簡素化する AWS 公式ライブラリ
X-Ray
AWS の分散トレーシングサービスで、リクエストの経路とレイテンシを可視化する