distributed-tracing について
Jaeger と Tempo を使ってマイクロサービスに分散トレーシングを導入するスキルです。分散システムを運用するチーム向けに、サンプリングやコンテキスト伝播、ログとの相関付けを案内します。
主な機能
- 01Jaeger と Tempo のトレーシングガイド
- 02レイテンシと依存関係の分析
- 03サンプリングとコンテキスト伝播
- 04トレースとログの相関付け
- 05トレース負荷のトラブルシューティング
活用シーン
- 01リクエスト遅延の調査
- 02サービス依存関係の把握
- 03ボトルネックとエラー伝播経路の特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill distributed-tracingインストール後、Claude Code で/distributed-tracingを入力して読み込まれたか確認します。
同梱ファイルreferences/details.md
詳細
分散トレーシング
Jaeger と Tempo を使用して分散トレーシングを実装し、マイクロサービス間のリクエストフローを可視化します。
目的
分散システム全体でリクエストを追跡し、レイテンシ、依存関係、障害ポイントを把握します。
使用する場面
- レイテンシの問題をデバッグする
- サービス間の依存関係を理解する
- ボトルネックを特定する
- エラーの伝播を追跡する
- リクエストの経路を分析する
詳細なパターンと実例
詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション階層では不十分な場合に、そのファイルを参照してください。
ベストプラクティス
- 適切にサンプリングする(本番環境では 1〜10%)
- 意味のあるタグを追加する(user_id、request_id)
- すべてのサービス境界をまたいでコンテキストを伝播する
- 例外をスパンに記録する
- 操作には一貫した命名を使用する
- トレーシングのオーバーヘッドを監視する(CPU 影響 1% 未満)
- トレースエラーに対するアラートを設定する
- 分散コンテキスト(baggage)を実装する
- 重要なマイルストーンにはスパンイベントを使用する
- 計装の標準を文書化する
ログとの統合
相関ログ
import logging
from opentelemetry import trace
logger = logging.getLogger(__name__)
def process_request():
span = trace.get_current_span()
trace_id = span.get_span_context().trace_id
logger.info(
"Processing request",
extra={"trace_id": format(trace_id, '032x')}
)
トラブルシューティング
トレースが表示されない:
- コレクターのエンドポイントを確認する
- ネットワーク接続を検証する
- サンプリング設定を確認する
- アプリケーションログを確認する
レイテンシのオーバーヘッドが高い:
- サンプリングレートを下げる
- バッチスパンプロセッサーを使用する
- エクスポーターの設定を確認する
関連スキル
prometheus-configuration- メトリクス向けgrafana-dashboards- 可視化向けslo-implementation- レイテンシ SLO 向け
コメント
Markdown 対応