OpenTelemetry Collectorの無難な設定
OpenTelemetry CollectorはSDKなどで作られたデータを受け取って別の場所に送信するツールです。
Collectorを使うことで送信先の情報をまとめて管理できたり、データに共通処理を追加したりすることができます。
この記事ではOpenTelemetry Collectorでトレースを送信するときに使う無難な設定を紹介します。
具体例
最初に、このページで使用する具体的な設定を紹介します。
この設定で、Collectorが受信したトレースのデータをサーバーに送信できます。
receivers:
otlp:
protocols:
http:
endpoint: localhost:4318
processors:
memory_limiter:
check_interval: 1s
limit_mib: 500
batch:
exporters:
otlphttp:
endpoint: https://xxx.example.com
headers:
"ヘッダー名": "ヘッダー値"
extensions:
health_check:
pprof:
zpages:
service:
extensions: [health_check, pprof, zpages]
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlphttp]
設定しているのは大まかに次の5箇所です。
- recivers
- processors
- exporters
- extensions
- service
設定内容の説明
具体例で使った設定について詳しくみていきましょう。
1. recivers
receiversでは外部から来るデータの受け口の設定をします。
httpやgrpcなど様々な方法で受信できますが、具体例ではhttpを設定しています。
receivers:
otlp:
protocols:
http:
endpoint: localhost:4318
この例では次のことを設定しています。
-
protocols
でhttpを受け入れること。 -
endpoint
でlocalhost:4318
へのデータを受け入れること。 (デフォルトは0.0.0.0:4318
となっていて全てのネットワークから受け入れるようになっています。localhostと指定することで送信元を限定しています)
2. processors
processorsでは受け取ったデータを送信する前に実行する処理を設定します。
OpenTelemetry Collectorが使うメモリ量を制限したり、データをまとめたりすることができます。
processors:
memory_limiter:
check_interval: 1s
limit_mib: 500
batch:
この例では次のことを設定しています。
-
memory_limiter
でメモリ使用量の上限を設定します。-
check_interval
でメモリ使用量の確認を1秒づつ確認するように設定します。 -
limit_mib
でメモリ使用量が500MiBを上限(ハードリミット)に設定しています。ソフトリミットは80%の400MiBに自動的に設定されます。
-
-
batch
で受け取ったデータをまとめるように設定しています。
※ memory_limitterの上限や確認の間隔に適した値は実行しているサーバーによって大きく変わるので、各環境に合わせて設定してください。
3. exporters
exportersではデータの送信方法を設定します。
httpやgrpcなど様々な方法で送信できますが、具体例ではhttpを設定しています。
exporters:
otlphttp:
endpoint: https://xxx.example.com
headers:
"ヘッダー名": "ヘッダー値"
この例では次のことを設定しています。
-
endpoint
で送信先を https://xxx.example.com に設定しています。 -
headers
でリクエストヘッダーを設定しています。認証が必要な時にトークンを渡すために使うことが多いです。
4. extensions
extensionsではデータの処理には関係しない処理を追加できます。
ヘルスチェックや
extensions:
health_check:
pprof:
zpages:
この例では次のことを設定しています。
-
health_check
でlocalhost:13133 からヘルスチェックが出来るようになります。 -
pprof
で localhost:1888/debug/pprof/ からプロファイル情報を取得できるようになります。 -
zpages
で localhost:55679/debug/servicez などからCollectorの情報を取得できるようになります。
5. service
今までの設定をserviceで有効化します。
service:
extensions: [health_check, pprof, zpages]
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlphttp]
この例では次のことを設定しています。
-
extensions
でextensionsで設定した処理を有効化します。 -
pipelines
で receivers,processors,exporters のそれぞれで使用するものを有効化します。
設定をまとめる
これまでの設定をまとめてファイルにすると、OpenTelemetry Collectorが受け取ったデータを他の場所に送るようになります。
終わりに
以上、OpenTelemetry Collectorを使う時の無難な設定を紹介しました。
Discussion