带有 Elasticsearch 的 Sleuth + Zipkin

Sleuth + Zipkins with Elasticsearch

任何人都可以指出 required/working 配置以将 Elasticsearch 用作 Zipkins 和 Sleuth 的存储类型吗?

pom.xml

'

<description>Spring Boot Zipkin Server</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.7.RELEASE</version>
</parent>

<properties>
    <docker.image.prefix>springio</docker.image.prefix>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <sonar.skip>true</sonar.skip>
    <zipkin.version>1.6.0</zipkin.version>
    <elasticsearch.version>2.3.4</elasticsearch.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <!-- EXAMPLE FOR RABBIT BINDING -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.restdocs</groupId>
        <artifactId>spring-restdocs-mockmvc</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <finalName>demo-zipkin-server</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

`

application.yml

服务器: 端口:9411 spring: 兔子: 主机:${RABBIT_HOST:localhost} 尤里卡: 客户: 注册尤里卡:真 服务-url: 默认区域:<a href="http://localhost:8761/eureka/" rel="nofollow noreferrer">http://localhost:8761/eureka/</a> 拉链: 自我追踪: 启用:假 贮存: 类型:弹性搜索 弹性搜索: 集群:${ES_CLUSTER:elasticsearch} 主机:${ES_HOSTS:localhost:9300} 索引:${ES_INDEX:zipkin} 索引分片:${ES_INDEX_SHARDS:5} 索引副本:${ES_INDEX_REPLICAS:1}

应用程序无法使用这些配置启动。它抛出 原因:java.lang.NoSuchMethodError:org.springframework.integration.amqp.support.DefaultAmqpHeaderMapper.inboundMappe

使用spring云流收集器http://cloud.spring.io/spring-cloud-sleuth/spring-cloud-sleuth.html#_spring_cloud_sleuth_stream_zipkin_collector with an elasticsearch data store https://github.com/openzipkin/zipkin/blob/master/zipkin-server/README.md#elasticsearch-storage

您发布的类路径问题是特定于版本的。请更新到最新版本的依赖项。

例如,您可以使用 start.spring.io 或其他方式从基础项目开始,以获取最近的支持。您也可以像这样复制一个项目:

https://github.com/openzipkin/sleuth-webmvc-example

Zipkin 目前原生支持 elasticsearch(意味着它不使用 Elasticsearch 驱动程序)。所以,自动配置的依赖是:

<!-- override sleuth's zipkin version since we are using latest -->
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin</artifactId>
    <version>1.28.1</version>
</dependency>
<!-- add the dependency for elasticsearch via http -->
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId>
    <version>1.28.1</version>
</dependency>

最小设置 zipkin.storage.type=elasticsearch。然后,设置你 overriding 注意 elasticsearch 的 http 端口是 9200 而不是 9300

最后,请为 zipkin 中的原生 RabbitMQ 支持点赞,这样您就不需要执行任何这些操作了! https://github.com/openzipkin/zipkin/issues/1614