オブザーバビリティ
システムの内部状態を外部から観測可能にし、問題の原因を迅速に特定するための仕組み
運用オブザーバビリティ
オブザーバビリティとは
オブザーバビリティ (Observability) は、システムの内部状態を外部から観測可能にし、「なぜ問題が起きたか」を迅速に特定するための仕組みである。モニタリングが「既知の問題を検知する」のに対し、オブザーバビリティは「未知の問題を調査する」能力を提供する。
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)
[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 使用率は正常か?」 | 「なぜこのリクエストが遅いのか?」 |
理論と実装の両面から学ぶなら関連書籍が参考になる。