springcloud+sleuth+kafka+zipkin+elasticsearch使用docker简单部署

简介

springcloud要是下调用链,首选springcloud家族的sleuth,数据展示大多都使用apache的zipkin。日志量大一般会使用mq做消峰,可以选中各种消息中间件,我先使用了rabbitMQ,后决定使用kafuka,因为kafuka吞吐量高于rabbitMQ。数据持久化采用elasticsearch。

方案

考虑到kafuka、elasticsearch部署麻烦,故使用docker安装kafuka、elasticsearch。zipkin下载jar包运行。

环境

docker:18.09.6
springboot:2.0.9.RELEASE
springcloud:Finchley.SR2
sleuth:2.0.2.RELEASE
kafuka:wurstmeister/kafka:latest
zipkin:zipkin-server-2.12.9-exec.jar
elasticsearch:docker.elastic.co/elasticsearch/elasticsearch:6.3.2

部署

spingcloud集成sleuth、zipkin、binder-kafka依赖

需要在所有的服务中加入以下依赖

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-sleuth</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zipkin</artifactId>
		</dependency>
<!--         <dependency> -->
<!-- 			<groupId>org.springframework.cloud</groupId> -->
<!-- 			<artifactId>spring-cloud-stream-binder-rabbit</artifactId> -->
<!-- 		</dependency> -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-kafka</artifactId>
        </dependency>

application.properties配置

需要在所有的服务中加入以下配置

#开启sleuth的debug级别日志
logging.level.org.springframework.cloud.sleuth=debug


#默认方式
#spring.zipkin.base-url=http://localhost:9411/
#spring.sleuth.web.client.enabled=true
#spring.sleuth.sampler.probability=1


#使用rabbitmq方式
#spring.zipkin.sender.type=rabbit
#spring.sleuth.web.client.enabled=true
##采样比例默认是0.1 为1表示全部上报
#spring.sleuth.sampler.probability=1
#spring.rabbitmq.host=127.0.0.1
#spring.rabbitmq.port=5672
#spring.rabbitmq.password=guest
#spring.rabbitmq.username=guest
#spring.rabbitmq.virtual-host=/


#使用kafuka方式
spring.cloud.stream.kafka.binder.brokers: 10.255.32.161:9092
spring.cloud.stream.kafka.binder.zkNodes: 127.0.0.1:2181
spring.sleuth.web.client.enabled=true
#采样比例默认是0.1 为1表示全部上报
spring.sleuth.sampler.probability=1

docker安装zk、kafuka、elasticsearch、elasticsearch-head

#安装zookeeper
docker pull wurstmeister/zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
#安装kafuka
docker pull wurstmeister/kafka
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.59.101 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
#安装elasticsearch
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
#安装elasticsearch-head
docker pull mobz/elasticsearch-head:5
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
#安装rabbitMq
#docker pull rabbitmq:management
#docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

修改elasticsearch的配置文件,加入跨域配置

docker exec -it es /bin/bash
vi config/elasticsearch.yml

最下面加入两行如下配置:

http.cors.enabled: true
http.cors.allow-origin: "*"

重启elasticsearch服务

docker restart es

下载zipkin、启动zipkin

wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'
#rabbitMQ中取数据
#RABBIT_ADDRESSES=127.0.0.1 java -jar zipkin-server-2.12.9-exec.jar
#kafuka中取数据
java -DKAFKA_ZOOKEEPER=127.0.0.1:2181 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://127.0.0.1:9200 -jar zipkin-server-2.12.9-exec.jar

测试

测试部署效果

zipkin访问地址:

http://127.0.0.1:9411/zipkin/

elasticsearch-head访问地址:

http://127.0.0.1:9100/

elasticsearch访问地址:

http://localhost:9200/

请求微服务,让产生相互调用。之后在zipkin中查看调用记录日志。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值