オブザーバビリティ
システムの内部状態を外部から観測可能にし、問題の原因を迅速に特定するための仕組み
オブザーバビリティとは
オブザーバビリティ (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
filter の文字列比較は大文字と小文字を区別する。上の例はログ出力側 (level: 'ERROR') と表記を揃えているが、出力側を小文字にしているシステムでは取りこぼすため、どちらに寄せるかを規約で固定しておく。
メトリクス
メトリクスのコード例を示す。
// カスタムメトリクスを 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 合計 170ms
└ Lambda A 120ms
├ DynamoDB 30ms
└ Lambda B 80ms
└ SQS 10ms
X-Ray はリクエストがどのサービスを通過し、どこで時間がかかっているかを可視化する。
モニタリング vs オブザーバビリティ
モニタリングとオブザーバビリティの違いを以下にまとめる。
| 観点 | モニタリング | オブザーバビリティ |
|---|---|---|
| 目的 | 既知の問題を検知 | 未知の問題を調査 |
| アプローチ | ダッシュボード + アラート | ログ + メトリクス + トレースの相関分析 |
| 質問 | 「CPU 使用率は正常か?」 | 「なぜこのリクエストが遅いのか?」 |
理論と実装の両面から学ぶなら関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
関連する記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。