トレースが繋がり、切れるのを見る
このラボは本物のOpenTelemetry上で動きます
VMの中でOTelコレクター・Jaeger・互いを呼び合う2つのサービスが実際に起動しています。リクエストが行き交い、スパンが作られ、コレクターを経由してJaegerにたまります。
前のモジュールのトレーシングのラボは、疑似クラスターで動いていました。リクエストが行き交わないため、伝播が途切れる現象そのものが起こりませんでした。それがOTCAで最もよく問われる箇所であるにもかかわらずです。
SDKはインストールしません。サービスが標準ライブラリでOTLP/HTTPを直接作ります。OTCAが問うのはtraceparentの形とOTLPの形なので、手で作ってみるほうが、むしろ試験範囲に近いです。
初回の起動には4分ほどかかります。
用意されているもの
frontend http://127.0.0.1:30080 backend 를 부릅니다
backend obs 네임스페이스 안
컬렉터 설정은 /etc/otelcol/config.yaml
Jaeger http://127.0.0.1:30686
질의 도구 traces frontend
このコードブロックの韓国語は、frontendがbackendを呼び出すこと、backendがobsネームスペースの中にあること、コレクターの設定ファイルの場所、Jaegerのアドレス、クエリ用ツールがtraces frontendであることを説明しています。
ステップ
- リクエストを1つ流して、スパンがつながる様子を残してください(保存先:
/root/otca/flow.txt)。 traceparentを分解して、結果を残してください(保存先:/root/otca/traceparent.txt)。- OTLPで送ったものを確認して、結果を残してください(保存先:
/root/otca/otlp.txt)。 - コレクターのパイプラインにプロセッサーを入れ、順序が処理順序であることを残してください(保存先:
/root/otca/pipeline.txt)。 - 伝播を切って、トレースが2つに分かれる様子を残してください(保存先:
/root/otca/broken.txt)。 - リソース属性とセマンティック規約を残してください(保存先:
/root/otca/semconv.txt)。 - サンプリングを設定し、何が捨てられるかを残してください(保存先:
/root/otca/sampling.txt)。 services=、broken_traces=、pipeline_order=の3行と説明を書いてください(保存先:/root/otca/report.md)。
参考
traces frontendで最近のトレースを見ます。| jqで絞り込んでみてください。- コレクターの設定を直したら、
apply_colで反映します。コレクターは設定を再読み込みする方法がないため、Podを新しく起動します。 - よくある間違い: スパンが到着したのに画面に見えないこと。タイムスタンプを確認してください。小さい数を入れると、1970年として索引付けされます。
- よくある間違い: JaegerのクエリAPIに時間範囲を渡さないこと。空の結果が返ります。
1回のリクエストが残すもの
リクエストを1つ流して、スパンがつながる様子を残してください(保存先: /root/otca/flow.txt)。
応答のtraceIdを、2つのサービスで比べてみてください。
ヘッダー1行の形
traceparentを分解して、結果を残してください(保存先: /root/otca/traceparent.txt)。
00-<32자리>-<16자리>-<2자리>の4つの部分でできています(プレースホルダーは32桁、16桁、2桁の部分です)。
OTLPはストレージではなくプロトコルである
OTLPで送ったものを確認して、結果を残してください(保存先: /root/otca/otlp.txt)。
コレクターのdebugエクスポーターのログに、受け取ったスパン数が出力されます。
プロセッサーの順序が処理順序になる
コレクターのパイプラインにプロセッサーを入れ、順序が処理順序であることを残してください(保存先: /root/otca/pipeline.txt)。
memory_limiterは先頭、batchは末尾です。なぜそうなのか考えてみてください。
伝播が途切れると何が見えるか
伝播を切って、トレースが2つに分かれる様子を残してください(保存先: /root/otca/broken.txt)。
スパンは両方とも残ります。1つにつながらないだけです。
名前を勝手に付けてはいけない理由
リソース属性とセマンティック規約を残してください(保存先: /root/otca/semconv.txt)。
service.nameはリソース属性で、http.request.methodはスパン属性です。
何を捨てるか
サンプリングを設定し、何が捨てられるかを残してください(保存先: /root/otca/sampling.txt)。
ヘッドは最初に決めて、あとから取り消せません。テールはすべて集めておいて、あとから選びます。
何を学んだか
services=、broken_traces=、pipeline_order=の3行と説明を書いてください(保存先: /root/otca/report.md)。
services=、broken_traces=、pipeline_order=の3行と説明を書いてください。