分散トレーシングの勉強をしてるとコレクタという単語に時々遭遇する。各サービスとバックエンドの間に入るものらしいというのはわかったが、一方で分散トレーシングのライブラリの使い方とかを読んでいるだけだと、文中にコレクタが出てこない。どういう代物なのか調べた。
コレクタとは
コレクタは各サービスとバックエンドの間に入って、トレースのサンプリングやフィルタリング、バックエンドへの送信のリトライ処理などを行ってくれる。小規模な環境ならトレースを直接、全件バックエンドに送っても問題にならないが、サービスの数やリクエスト数が増えてくるとデータ量も大きくなるので、途中でサンプリングして件数を減らしてやる必要がある。
また、開発者が関心があるのは問題がなかったトレースではなく、エラーが発生したケースやレイテンシが非常に大きいケースなどの異常なケースのみだと思われるので、問題ないトレースはフィルタしてやって異常なトレースだけバックエンドに送信して可視化する。
コレクタのお試し
このページをやるととりあえずOTELのコレクタを実行させて、トレースを送りつけることはできる。
-
https://opentelemetry.io/docs/collector/quick-start/
ただコレクタの設定の細かい話(フィルタとか)はやってないし、送信元も何か適当なサービスを作ったのではなくシミュレータなのであまり参考にはならない。