inflearn logo
知識共有
inflearn logo

分散トレーシングの実践トラブルシューティング — OpenTelemetryで途切れて消えるトレースを捉える

注文API → 決済 → 在庫 → Kafka → コンシューマー → バッチへと続くマイクロサービスで、トレースが途切れたり、数千スパンに膨れ上がってひそかに破棄されたり、ダッシュボードから消えたりする問題を自ら再現し、症状 → 判別 → 解消の順に修正して、最後までつながるトレースとダッシュボードを完成させます。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

grafana
grafana
Prometheus
Prometheus
Docker
Docker
Kafka
Kafka
MSA
MSA
grafana
grafana
Prometheus
Prometheus
Docker
Docker
Kafka
Kafka
MSA
MSA

この講座で身につくこと

  • トレースが二つに分かれる場合、HTTP計装・メッセージヘッダー・スレッドコンテキスト・伝搬形式・サンプリングのうち、どこが原因かをいくつかのコマンドで特定します。

  • アプリのエラーを伴わずにスパンが消失する箇所(コレクターのキュー、終了前の未フラッシュ、トレースサイズ上限)をメトリクスで特定します。

  • バッチ・コンシューマーで数千スパン規模のトレースが発生する構造を理解し、チャンクスパン・トレース境界・スパンリンクを使って再設計します。

  • 送信を無効にして伝播だけを残したサービスが原因で発生する、ルートのない巨大なトレースを見つけ、伝播ポリシーで解消します。

  • 自動計測のスパン・スパン名・属性のカーディナリティを見直し、コレクター変換・テールサンプリングでスパンの予算を守ります。

  • 観測スタックを切り替えた後、空のダッシュボードをメトリクス名・単位・ラベルの変化から診断し、レコーディングルールで復旧します。

  • AIエージェントに観測データを照会させる際は、時間枠・結果数・対象をコードで制限し、照会記録を残します。

最終目標:障害が5つ発生しているショッピングモールの注文フローを受け取り、症状だけを見て原因を特定し、一つずつ修正して、注文から出荷・精算までを一本につなぐトレースと、復旧したダッシュボードを自分の手で完成させます。

注文API → 決済 → 在庫 → Kafka → コンシューマー → バッチへとつながるマイクロサービスで、トレースが途切れる、数千のスパンに膨れ上がってひそかに破棄される、ダッシュボードから消えるといった問題を自ら再現し、症状 → 判別 → 解消の順に対処して、最後までつながるトレースとダッシュボードを完成させます。

トレーシング講座の多くは、計装を追加して画面にトレースが表示されたところで終わります。この講座ではその先、運用中にトレースが途切れたり、肥大化したり、消えたりするケースを扱います。アプリでエラーは発生していないのに画面上だけで起きる異常を、障害スイッチを使って一つずつ再現し、すべての数値を実習環境で実際に測定した値で示します。JavaやPythonのサービス、Kafka、バッチ処理が混在する一つの注文フローを最後まで追い、最後には五つの障害が同時に発生している状態を自分で修正します。

この講義を終えると

  • トレースが2つに分かれるとき、HTTP計装・メッセージヘッダー・スレッドコンテキスト・伝搬形式・サンプリングのうち、どこに原因があるのかを、いくつかのコマンドで見極めます。

  • アプリケーションエラーが発生していないのにスパンが消失する箇所(コレクターのキュー、終了前の未フラッシュ、トレースサイズの上限)を、メトリクスから特定します。

  • バッチ・コンシューマーで数千スパンに及ぶトレースが発生する構造を理解し、チャンクスパン・トレース境界・スパンリンクを用いて再設計します。

  • 送信を無効にして伝播だけを残したサービスが原因で発生する、ルートのない巨大なトレースを特定し、伝播ポリシーで解消します。

  • 自動計装スパン・スパン名・属性カーディナリティを見直し、コレクター変換・テールサンプリングでスパン予算を守ります。

  • 観測スタックを変更した後、空のダッシュボードの原因をメトリクス名・単位・ラベルの変化から診断し、レコーディングルールで復旧させます。

  • AIエージェントに可観測性データを照会させる際、時間枠・結果数・対象をコードで制限し、照会記録を残します。

こんな方におすすめです

  • マイクロサービスのコマースを運用し、トレースが「時々途切れる」、「開かない」と言われるバックエンド開発者

  • OpenTelemetryを導入したものの、Collector・Tempo・Prometheusで何を見ればよいのか分からず困っているSRE・プラットフォームエンジニア

  • オブザーバビリティスタックをベンダー製品からオープンソースへ移行中、または移行後にダッシュボードが空のチーム

  • Kafkaコンシューマー・バッチジョブのトレース設計を決める必要がある方

カリキュラム(9セクション・40講・約248分)

  • セクション1. はじめに — 最終成果物のデモと講義の全体像

  • セクション2. 実習環境と正常なトレース — LoopMarketの注文フローとオブザーバビリティスタックの起動、正常なトレースを1つ最後まで読む、コンテキスト伝播の原理 — traceparentヘッダー、障害注入スクリプトと判定ツール

  • セクション3. 途切れるトレース — ヘッダーを引き継がないHTTP呼び出し — 二つに分断されたトレース、メッセージキューで途切れるトレース、スレッドプール・非同期タスクで消える親、プロパゲーターの不一致 — 異なるヘッダー形式、サンプリング判断の不一致による欠落のあるトレース、コレクターでひっそり破棄されるスパン、フラッシュせずに終了するバッチ — 最後のスパンの消失

  • セクション4. 巨大なトレースとサイズ上限 — トレースのサイズ上限 — 超えるとひっそり破棄される、サンプリング率を下げても1つのトレースは小さくならない、ループごとにスパンを作成するバッチ処理、メッセージごとにトレースを分断しないコンシューマー、スパンリンクへの切り替え、バッチジョブのトレース境界の設計、大きな属性がトレースを肥大化させる場合

  • セクション5. 伝搬だけが有効になっている落とし穴 — 送信は無効にしたのに伝搬は有効なままのサービス、ルートのないトレースを見つける、伝搬ポリシーで解消する

  • セクション6. スパンのコストとカーディナリティ — 不要な自動計装スパンをオフにする、スパン名のカーディナリティ、属性のカーディナリティとスパンメトリクスの爆発、コレクターで整理する — 変換と削除、テールサンプリング — エラーと遅いトレースだけを残す、スパン予算を立てる

  • セクション7. スタック切り替え後にダッシュボードが空になる — スタックを切り替えたらダッシュボードが空になった、メトリクス名の変化 — ドット・単位・サフィックス、ラベルの変化 — サービス名とリソース属性、記録ルールで橋渡しして確認、ログからトレースへ移行する

  • セクション8. AIエージェントで観測データを検索 — エージェント検索のコスト — 時間枠がそのままコスト、安全ルールをコード化 — 制限付き検索ツール、エージェントで原因を特定する実行

  • セクション9. キャップストーン — LoopMarketのトレースを完成させる — キャップストーン1 — LoopMarketで発生した不具合の症状一覧、キャップストーン2 — 判別、キャップストーン3 — 解消と最後までつながったトレース、キャップストーン4 — ダッシュボードの完成と総合チェックリスト

実習環境

実習では、docker compose ひとつで起動する仮想ショッピングモール「ループマーケット」を使います。開発者15人ほどで運営する、成長中のスポーツ・アウトドア専門店です。トラフィックが集中するのは、シーズンオフセールや新商品の限定販売のときくらいです。注文API(Java、Javaエージェントによる自動計装)、決済・在庫・出荷コンシューマー・精算バッチ(Python、OpenTelemetry SDK)、Kafka、PostgreSQL、OTel Collector、Tempo、Prometheus、Loki、Grafanaまで、常時稼働する11のサービスがノートPC1台で動きます。./fault.shで障害をオン・オフし、./lmツールですぐにトレース・メトリクス・ログを確認できます。

前提知識

  • Docker・Docker Composeを使った経験(Mac・Linuxのターミナル基本コマンド)

  • HTTP APIとメッセージキュー(Kafka)の基本概念

  • Dockerに6GB以上のメモリを割り当てられるコンピューター(実習用サービス11個を同時に起動します)

この講義で扱わないこと

  • OpenTelemetryの初回インストールや概念の入門だけを希望する方(インストールも扱いますが、トラブルシューティングが中心です)

  • Kubernetesのデプロイ・オペレーター構成

  • 特定の商用オブザーバビリティ製品の使い方

  • アプリケーションのパフォーマンスチューニングそのもの

案内

スライドのナレーションは合成音声です。すべてのデータは教育用の仮想データであり、数値は実行環境によって異なる場合があります。

次のような方に
おすすめです

受講対象

  • マイクロサービス型ECを運営する中で、トレースが「時々途切れる」、「開かない」と言われるバックエンド開発者

  • OpenTelemetryを導入したものの、Collector・Tempo・Prometheusで何を見ればよいのか途方に暮れているSRE・プラットフォームエンジニア

  • オブザーバビリティスタックをベンダー製品からオープンソースへ移行中、または移行後にダッシュボードが空になっているチーム

  • Kafkaコンシューマーやバッチジョブのトレース設計を決める必要がある方

前提知識

  • Docker・Docker Composeを使った経験(Mac・Linuxのターミナル基本コマンド)

  • HTTP APIとメッセージキュー(Kafka)の基本概念

  • Dockerに6GB以上のメモリを割り当てられるコンピューター(実習サービス11個を一度に起動します)

こんにちは
dorian05202988です。

経歴認証済み

20年以上にわたりデータベースとIT分野でキャリアを積んできたデータ職人です。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームに携わり、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。ゲーム・金融・ITサービス分野での経験をもとに、データベースとクラウドアーキテクチャについて解説しています。『オラ​​クル実務チューニング SQLパターン学習』と『Oracle Pro*C実務プロジェクト活用書』を出版し、AWS Summit 2018・2019と「データよ、遊ぼう」2020では、サーバーレス・データベースの選択・マルチデータベース戦略について発表しました。最近は、Bedrock LLMを利用したスロークエリの分析・チューニング提案、DBスペック算定の自動化、DBメタMCPサーバーとSlackボットを通じた照会フローを扱っています。開発者向けのデータベース自動化と、非開発者向けのAI業務活用について、各コースの対象者と目的に合わせた実習を通じて解説しています。AIの提案をそのまま適用するのではなく、結果の同一性・実行計画・観測条件を確認し、根拠が不足している場合は保留する判断基準を伝えています。会社の運用データや認証情報は講義資料に含めません。

もっと見る

カリキュラム

全体

40件 ∙ (4時間 8分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

dorian05202988の他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥52,800

20%

¥8,441