open-telemetry / opentelemetry-auto-ext-rdkafka
ext-rdkafka Kafka 客户端自动仪表化 OpenTelemetry
0.0.1
2024-07-24 00:59 UTC
Requires
- php: ^8.2
- composer-runtime-api: ^2.0
- ext-opentelemetry: *
- ext-rdkafka: *
- open-telemetry/api: ^1.0
- open-telemetry/sem-conv: ^1.24
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- mockery/mockery: ^1.5
- open-telemetry/sdk: ^1.0
- phan/phan: ^5.0
- phpstan/phpstan: ^1.1
- phpstan/phpstan-mockery: ^1.1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.18.4
- vimeo/psalm: ^5.0
README
这是来自 https://github.com/open-telemetry/opentelemetry-php-contrib 的只读子树分割。
OpenTelemetry ext-rdkafka 自动仪表化
请阅读 https://opentelemetry.io/docs/instrumentation/php/automatic/ 了解如何安装和配置此扩展和 SDK。
概述
自动仪表化钩子通过 composer 注册。对于每个消费的消息都会创建一个新的 span。此仪表化的目标是允许 PHP 在 Kafka 中发生分布式跟踪。这意味着以下应该发生:
- 对于每个消费的消息应创建一个 span
- span 应该在正确的父上下文中创建 - 如果入站消息包含 traceparent 标头
- span 应在消息偏移量
提交
时结束 - 任何产生的消息应将 traceparent 标头注入到消息头中
这是通过挂钩到三个方法来完成的
\RdKafka\KafkaConsumer::consume
- 用于在入站消息上创建 span 和上下文传播。\RdKafka\ProducerTopic::producev
- 用于将 traceparent 标头注入到产生消息的消息头中。- 注意有一个旧方法叫做
produce
。它不支持头信息,因此没有必要挂钩到此方法
- 注意有一个旧方法叫做
\RdKafka\KafkaConsumer::commit
/\RdKafka\KafkaConsumer::commitAsync
- 用于在消息偏移量提交时结束 span。
版本
- 在 PHP 8.2 和 8.3 上测试成功
配置
可以通过 运行时配置 禁用此扩展
OTEL_PHP_DISABLED_INSTRUMENTATIONS=ext-rdkafka