我目前正在运行Spring Cloud Edgware.SR2。我正在将服务从RabbitMQ迁移到Kafka,此时我在zipkin主题(即kafka-console-consumer.sh --new-consumer --bootstrap-server localhost:9092 --topic zipkin --from-beginning
)上运行kafka-console-consumer.sh时看不到任何Zipkin跟踪。因此,我当然没有在Zipkin UI中看到任何跟踪信息。
以下是我作为生产者服务的一部分的依赖关系:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath></relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
<scope>test</scope>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-contract-verifier</artifactId>
<scope>test</scope>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka11</artifactId>
<version>1.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-java-dsl</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jmx</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<scope>test</scope>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
<version>4.2.3.RELEASE</version>
</dependency>
</dependencies>
这些是我根据说明at the bottom of the Spring Cloud Stream project page提取spring-cloud-stream-binder-kafka11
依赖项后必须进行的依赖性覆盖。
我还看了Sleuth with Zipkin via RabbitMQ or Kafka的说明,我认为我的那部分是正确的。
文档说明If you want Sleuth over RabbitMQ add the spring-cloud-starter-zipkin and spring-rabbit dependencies.
它特别提到了RabbitMQ需要spring-cloud-starter-zipkin
,但我添加了它,即使我使用Kafka,因为没有这种依赖也无法工作。
关于我缺少什么或者错误配置以捕获侦探痕迹并使用Kafka将它们发送到Zipkin服务器的任何想法?
答案 0 :(得分:2)
为什么要手动设置依赖项的值?请使用Edgware.SR2 BOM。您必须添加kafka依赖项,确保Rabbit不在类路径中。如果您在类路径中同时拥有kafka和rabbit,则需要设置spring.zipkin.sender.type=kafka
更新:
正如我们在文档中所描述的那样,在Edgware中不推荐使用Sleuth Stream支持,并在FInchley中将其删除。如果您决定采用使用本机Zipkin消息传递支持的新方法,则必须使用如此处所述的使用Kafka的Zipkin服务器https://github.com/openzipkin/zipkin/tree/master/zipkin-autoconfigure/collector-kafka10。让我复制部分文档
以下配置点适用于KAFKA_BOOTSTRAP_SERVERS
或。{
zipkin.collector.kafka.bootstrap-servers
已设置。可以通过设置环境来配置它们
变量或使用-Dproperty.name=value
命令行设置java系统属性
论点。某些设置对应于&#34;新消费者配置&#34;在
Kafka documentation
环境变量|财产|新消费者配置|描述
KAFKA_BOOTSTRAP_SERVERS
| zipkin.collector.kafka.bootstrap-servers
| bootstrap.servers |以逗号分隔的经纪人名单,例如127.0.0.1:9092。没有默认
KAFKA_GROUP_ID
| zipkin.collector.kafka.group-id
| group.id |此过程代表的消费者群体正在消费。默认为zipkin
KAFKA_TOPIC
| zipkin.collector.kafka.topic
| N / A |以逗号分隔的zipkin跨度主题列表将被使用。默认为zipkin
KAFKA_STREAMS
| zipkin.collector.kafka.streams
| N / A |消耗该主题的线程数。默认为1