地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

複数サービスでトレースしたい

opentelemetry.io

Propagators APIを用いることでサービスAのトレース情報をサービスBに伝播することができる。これができればJaegurとかから以下のように一つのトレースで複数サービスを見ることができる。

やり方

とても簡単で 後続のサービスへspanのContextを伝播するには、otel.SetTextMapPropagatorを追記するだけで良い。この時気をつけるべきなのは送る側だけじゃなく受け取る側でも同様の設定が必要となっている。

   otel.SetTextMapPropagator(
        propagation.NewCompositeTextMapPropagator(
            propagation.TraceContext{},
            propagation.Baggage{},
        ),
    )

設定した上でサービス間のリクエストにotelhttp.NewTransportを入れてあげることでhttpリクエストヘッダーに必要な情報が追記される。grpcの場合も少ない手順で実現できる模様(以下の記事を参考にさせていただきました🙇‍♂️)。

christina04.hatenablog.com

opentelemetry.io