前回の続き
前回の調査で分散トレーシングのコレクタがどういうものかはわかったが、では実際にproduction-readyな形でデプロイしようとした時に、どの様な手段でデプロイできるのか、どの様な形でデプロイされるのかがわからなかったので調査した。
今回は具体的なコレクタの実装として、OpenTelemetroyのCollectorを使用する。またインストール先はkubernetesを想定する。
opentelemetry collectorのinstallページを見ると、production-readyなcollectorをインストールしたいときは、helmチャートを使うかoperatorを使えとある。
helm chart
helm経由でcollectorをインストールする場合、インストール方法をdeamonset、deployment、statefulsetの中から選ぶことができる。どの方法を使うべきか、意思決定の方法はgithub側に記載がないが、opentelemetroyのKubernetes Getting Startedのページに多少の記載がある。
このページによると、collectorの最初のステップとしてはdeamonsetの利用が勧められている。各ノードにcollectorをインストールして、各ノードのメトリクスやトレースなどを収集してくれる。
getting startedのページを読んでいたらOTEL Receiverという新しい単語がまた出てきた。collectorの一要素で、実際のトレースやメトリクス、ログの受信はこのコンポーネントが行なっているらしい。OTEL Receiverのconfigを見ると前回起動したcollectorの設定と一致するので、前回もこのReceiverを知らず知らず使っていたようだ。
operator
OTELのoperatorはopentelemetry Collectorの他に、自動計装のサイドカーもインストールすることができる。このサイドカーをpodにインジェクションすると、対応している言語のアプリに限り、コードの変更を行わなくてもトレースやメトリクスを取得することができる。
参考: