オブザーバビリティエンジニアリングの実践を包括的に支援する。構造化イベント設計、 分散トレーシング、OpenTelemetry 計装、SLO ベースアラート、サンプリング戦略、 テレメトリパイプライン構築、成熟度評価を一気通貫でガイドする。 Use when user says「オブザーバビリティを導入したい」「OpenTelemetryの計装を設計して」 「SLOベースのアラートを設計して」「テレメトリパイプラインを構築したい」 「分散トレーシングを導入して」「監視からオブザーバビリティに移行したい」 「構造化イベントを設計して」「サンプリング戦略を決めたい」「オブザーバビリティ成熟度を評価して」 「ログが多すぎる」「デバッグが辛い」「アラートの嵐」「何が起きてるか分からない」。 Do NOT use for: インフラ基盤のメトリクス監視設定(→ 既存モニタリングツール)、 単純なログ集約設定(→ ロギングツール設定タスク)、 インシデント対応フロー・オンコール体制設計・ポストモーテム(→ incident-response)。
「システムがどんな状態に陥っても、新規コードなしに理解・説明できる力を組織に実装する」
設計書・OTel 案・SLO 定義は file_read / file_write とプロジェクト workspace(notes / proposal 等)を正とする。references の YAML はクラスタ適用の例示。incident-response・diagram との分担は references/strands-py-runtime.md を参照。
要件定義 → [observability] → 計装実装 → 運用開始
↓
成熟度評価 / イベント設計 / トレーシング設計 /
OTel 計装設計 / SLO アラート設計 /
サンプリング戦略 / テレメトリパイプライン設計
| 入力 | 説明 | 例 |
|---|---|---|
| 対象システムの概要 | アーキテクチャ、サービス構成、使用言語 | マイクロサービス 12個、Go/Python、K8s 上 |
| 現状のモニタリング状況 | 既存ツール、アラート設定、課題 | Prometheus + Grafana、アラート 200件で疲弊 |
| ビジネス要件 | SLA/SLO ターゲット、重要なユーザージャーニー | 99.95% 可用性、決済フロー < 500ms |
| 出力 | 形式 | 説明 |
|---|---|---|
| オブザーバビリティ設計書 | Markdown | 各ステップの設計成果をまとめた文書 |
| OTel 計装ガイド | Markdown + Code | 自動計装・カスタム計装の具体的コード |
| SLO 定義書 | Markdown | SLI/SLO/エラーバジェットの定義 |
| テレメトリパイプライン設計図 | Markdown / draw.io | パイプラインアーキテクチャ |
組織の現状を OMM(Observability Maturity Model)の 5 能力で診断する。
各能力を「未着手 / 初期 / 発展 / 成熟」の 4 段階で評価する。
| 能力 | 評価観点 |
|---|---|
| 障害への回復力 | MTTR、アラート疲れの有無、オンコール持続可能性 |
| 高品質コードの提供 | 本番バグ頻度、デプロイへの恐怖感、デバッグの容易さ |
| 技術的負債の管理 | コアビジネス作業の割合、反復作業の多寡 |
| リリースケイデンス | コミット→本番の所要時間、フィーチャーフラグ活用度 |
| ユーザー行動の理解 | PM のデータアクセス度、顧客フィードバックの速度 |
ビジネスインパクトが最大の能力を特定し、投資優先順位を決定する。
チェックリスト:
オブザーバビリティの基本単位である「任意幅の構造化イベント」を設計する。
必須フィールド:
trace_id, span_id, parent_idtimestamp, duration_msservice_name, span_namestatus_code, error_message高カーディナリティフィールド(デバッグに最も有用):
user_id, session_id, request_id, shopping_cart_idbuild_id, hostname, instance_type, availability_zoneビジネスコンテキストフィールド:
app.api_key, app.dataset.id, app.team.idapp.raw_size_bytes, app.sample_rateチェックリスト:
イベントをトレースとしてステッチし、サービス間の関係を可視化する。
Root Span (API Gateway)
├── Child Span (Auth Service)
├── Child Span (User Service)
│ └── Child Span (Database Query)
└── Child Span (Notification Service)
チェックリスト:
OTel を使った 3 段階計装戦略を設計する。
otelhttp, otelgrpc)opentelemetry-instrument CLIvar tr = otel.Tracer("module_name")// Example: custom span with business attributes
func processOrder(ctx context.Context, order Order) error {
ctx, sp := tr.Start(ctx, "process_order")
defer sp.End()
sp.SetAttributes(
attribute.String("order.id", order.ID),
attribute.Float64("order.total", order.Total),
attribute.String("order.customer_id", order.CustomerID),
)
// ... business logic ...
return nil
}
チェックリスト:
閾値アラートから SLO ベースアラートへ移行し、アラート疲れを解消する。
各クリティカルユーザージャーニーに対して SLI を定義する。
# Example SLI definition