没有Spring Cloud Sleuth追踪Kafka

时间:2018-02-12 23:00:38

标签: spring-cloud-stream spring-cloud-sleuth

我目前正在运行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服务器的任何想法?

1 个答案:

答案 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