OpenTelemetry Collector と Jeager をDocker Composeで立てて手軽に可視化してみる試み
Docker compose
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/examples/demo/docker-compose.yaml
を参考にして最小限の構成にする
Jaegerの各portの意味はこちらで確認する。
https://www.jaegertracing.io/docs/1.52/getting-started/
OTEL Collector Configuration
https://opentelemetry.io/docs/collector/configuration/
を参考に otel-collector-config.yaml
を作成する
Jaeger がOTLPをサポートしたことに伴い、
opentelemetry-collector v0.86.0 で
jaeger exporter は削除され、otlp exporterでexportできるようになっている。
ちなみにjaeger exporterを指定すると以下のようなエラーが出る。
* error decoding 'exporters': unknown type: "jaeger" for id: "jaeger" (valid values: [kafka prometheus prometheusremotewrite debug logging otlphttp file otlp opencensus zipkin])
アプリケーションを実装する
Getting Started のHTTP serverのコードをベースにする。
こちらのコードをコピペしてhttp serverを作ったら、otel.go
のtraceExporterを次のように書き換え、Collectorに送信されるようにする
OTLP trace exporter using gRPC をgo getで入れる
Go のexporterの使い方はこちら
https://opentelemetry.io/docs/instrumentation/go/exporters/
実行してみる
Jaeger (http://localhost:16686) できちんと送信されているのが確認できた
![[note/Pasted-image-20231220073520.png|]]
まとめ
Collectorを挟むとアプリケーションは楽に実装できそう。
Prometheus とJaeger両方に送信するってことも簡単なのでよさげ