observability について
ソフトウェアの開発者や運用担当者向けの可観測性リファレンススキルです。ログ、メトリクス、トレースに加え、OpenTelemetry の設定、アラート、ダッシュボードの要点を扱います。
主な機能
- 01ログ、メトリクス、トレース
- 02OpenTelemetry 設定例
- 03RED と USE のメトリクス手法
- 04実行可能なアラート設計の指針
- 05ダッシュボードの主要パネル案
活用シーン
- 01サービスのログ、メトリクス、トレース収集を計画
- 02RED または USE で主要メトリクスを整理
- 03高エラー率アラートとサービスダッシュボードを設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dralgorhythm/ claude-agentic-framework --skill observabilityインストール後、Claude Code で/observabilityを入力して読み込まれたか確認します。
詳細
オブザーバビリティ
3 つの柱
1. ログ
コンテキストを含む個別のイベントです。
{
"timestamp": "2024-01-01T12:00:00Z",
"level": "error",
"message": "Failed to process order",
"orderId": "123",
"error": "Payment declined",
"traceId": "abc123"
}
2. メトリクス
時間の経過に伴う数値の測定値です。
http_requests_total{method="GET", status="200"} 1234
http_request_duration_seconds{quantile="0.95"} 0.23
3. トレース
サービスを通過するリクエストの流れです。
Trace: abc123
├── API Gateway (50ms)
│ ├── Auth Service (10ms)
│ └── Order Service (35ms)
│ └── Database (20ms)
OpenTelemetry のセットアップ
import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter({
url: 'http://collector:4318/v1/traces',
}),
serviceName: 'my-service',
});
sdk.start();
主なメトリクス
RED メソッド(リクエストに着目)
- Rate:1 秒あたりのリクエスト数
- Errors:1 秒あたりの失敗したリクエスト数
- Duration:リクエストのレイテンシー
USE メソッド(リソースに着目)
- Utilization:稼働中の時間の割合(%)
- Saturation:キューの深さ
- Errors:エラー数
アラート
優れたアラート
- 対応可能:実行できる対処があります
- 緊急:直ちに対応する必要があります
- 具体的:問題が何か明確です
アラートのテンプレート
alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.01
for: 5m
labels:
severity: critical
annotations:
summary: "High error rate on {{ $labels.service }}"
description: "Error rate is {{ $value | humanizePercentage }}"
ダッシュボード
必須のパネル:
- リクエスト率
- エラー率
- レイテンシー(P50、P95、P99)
- 飽和度(CPU、メモリ)
- アクティブなアラート
コメント
Markdown 対応