なぜオブザーバビリティが重要なのか

現代のシステムはマイクロサービス・クラウド・コンテナと複雑化し、「どこで何が起きているか」を把握することが難しくなっています。オブザーバビリティ(可観測性)は、システムの内部状態を外部出力から推測できる能力です。

オブザーバビリティの3本柱

1. ログ(Logs):何が起きたか

import structlog

log = structlog.get_logger()

log.info("order.created",
    order_id="ord-123",
    user_id="user-456",
    amount=9800,
    items=3)

構造化ログ(JSON形式)が検索・集計に有利です。

2. メトリクス(Metrics):どのくらい起きているか

from prometheus_client import Counter, Histogram, start_http_server

REQUEST_COUNT = Counter('http_requests_total',
    'Total HTTP requests', ['method', 'status'])
REQUEST_LATENCY = Histogram('http_request_duration_seconds',
    'HTTP request latency')

@REQUEST_LATENCY.time()
def handle_request():
    REQUEST_COUNT.labels(method='GET', status='200').inc()

3. 分散トレース(Traces):どこを通ったか

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider

provider = TracerProvider()
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("order-processing") as span:
    span.set_attribute("order.id", "ord-123")
    with tracer.start_as_current_span("db-query"):
        result = db.execute("SELECT ...")

ツールスタック

用途 OSS マネージド
ログ ELK Stack Datadog Logs
メトリクス Prometheus + Grafana CloudWatch
トレース Jaeger / Zipkin AWS X-Ray
統合 OpenTelemetry Datadog / New Relic

SLO・SLI・SLAの関係

用語 意味
SLI 測定指標 APIの99パーセンタイル遅延
SLO 目標値 p99 < 500ms
SLA 顧客との約束 99.9%の可用性を保証

エラーバジェット(許容できる障害量)でSLOとの乖離を管理し、信頼性と開発速度のバランスを取ります。

オブザーバビリティはシステムの「健康診断」です。本番障害の根本原因調査時間を劇的に短縮できます。