オブザーバビリティ

システムの内部状態を外部から観測可能にし、問題の原因を迅速に特定するための仕組み

運用オブザーバビリティ
オブザーバビリティ」の技術書を見る →

オブザーバビリティとは

オブザーバビリティ (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 合計 170msLambda A 120msDynamoDB 30msLambda B 80msSQS 10ms

X-Ray はリクエストがどのサービスを通過し、どこで時間がかかっているかを可視化する。

モニタリング vs オブザーバビリティ

モニタリングとオブザーバビリティの違いを以下にまとめる。

観点モニタリングオブザーバビリティ
目的既知の問題を検知未知の問題を調査
アプローチダッシュボード + アラートログ + メトリクス + トレースの相関分析
質問CPU 使用率は正常か?」「なぜこのリクエストが遅いのか?」

理論と実装の両面から学ぶなら関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事