Spring cloud Zipkin 链路追踪安装配置和使用,SpringCloud Zipkin server 下载安装

 

Spring cloud Zipkin 链路追踪安装配置和使用,SpringCloud Zipkin server 下载安装

 

================================

©Copyright 蕃薯耀 2021-03-29

https://www.cnblogs.com/fanshuyao/

 

一、Spring cloud Zipkin 概述

为什么要使用链路追踪?
如果一个企业存在N多个系统,N多个微服务,服务之前相互调用,突然有一个请求变得很慢,那找原因就很麻烦。
若配置了链路追踪,则能实时监控服务调用的情况,包括服务调用的时间,很容易就能知道哪个服务的请求变慢。

Zipkin是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时间数据。功能包括收集和查找这些数据。
如果日志文件中有跟踪ID,可以直接跳转到它。否则,可以根据服务、操作名称、标记和持续时间等属性进行查询。我们将为您总结一些有趣的数据,例如在服务中花费的时间百分比,以及操作是否失败。

官网地址:

https://zipkin.io/

 


二、SpringCloud Zipkin server 下载地址
zipkin-server最新版本下载地址:

https://repo1.maven.org/maven2/io/zipkin/zipkin-server/2.23.2/zipkin-server-2.23.2-exec.jar

 

zipkin-server更多版本(2.14.1-2.23.2【当前最新版】)下载地址:

https://repo1.maven.org/maven2/io/zipkin/zipkin-server/

 

zipkin-server(2.10.4-2.12.9)下载地址:

https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

 

zipkin-server官网说明文档:

https://github.com/openzipkin/zipkin/tree/master/zipkin-server

 


三、SpringCloud Zipkin server 运行启动
Zipkin server是一个java1.8+服务,打包为一个可执行jar。

java -jar zipkin-server-2.23.2-exec.jar

 

Windows示例:

F:\0我的软件\springCloud\Zipkin\zipkin-server>java -jar zipkin-server-2.23.2-exec.jar

启动后:
:: version 2.23.2 :: commit 7bf3aab ::
2021-03-26 16:10:40.462 INFO [/] 5972 --- [oss-http-*:9411] c.l.a.s.Server : Serving HTTP at /0:0:0:0:0:0:0:0:9411 - http://127.0.0.1:9411/

 

浏览器打开地址进入到Zipkin监控页面:

http://127.0.0.1:9411/

 

四、SpringCloud Zipkin 配置
Span存储和收集器是可配置的。默认情况下,存储在内存中,HTTP收集器(POST/api/v2/spans端点)被启用,服务器侦听端口9411。
Zipkin服务器是用Armeria实现的。虽然Zipkin服务器在内部使用Spring引导,但不应将其视为普通的Spring引导应用程序。
注:不支持自定义服务器,zipkin不能作为您打包的应用程序的一部分

1、Endpoints(端点)
以下端点是在基url下定义的:http://your_host:9411

/ - UI
/config.json - Configuration for the UI
/api/v2 - API
/health - 如果正常,则返回200状态
/info - 提供正在运行的实例的版本
/metrics - 包括按传输类型细分的收集器度量
/prometheus - Prometheus scrape endpoint(普罗米修斯刮除端点)

 

2、CORS (Cross-origin Resource Sharing)(跨域请求)
默认情况下,/api/v2下的所有端点都配置为允许跨源请求。
这可以通过修改属性来更改:zipkin.query.allowed-origins.
例如,允许CORS请求来自:http://foo.bar.com:

ZIPKIN_QUERY_ALLOWED_ORIGINS=http://foo.bar.com

 

3、Logging(日志)
默认情况下,zipkin将日志消息写入信息级别及更高级别的控制台。可以使用logging.level.XXX属性。
例如,如果要为所有zipkin类别启用debug调试日志记录,可以按如下方式启动服务器:

$ java -jar zipkin.jar --logging.level.zipkin2=DEBUG

 


4、Configuration(Zipkin配置)
我们支持ENV变量配置,比如STORAGE_TYPE=cassandra3,因为管理员很熟悉这些配置,而且在Docker等运行时环境中也很容易使用。
以下是Zipkin的顶级配置:

QUERY_PORT:HTTP API和web UI的侦听端口;默认为9411
QUERY_ENABLEDfalse禁用“
/api/v2”下的HTTP读取端点。这也会禁用UI,因为它依赖于API。如果您的唯一目标是限制搜索,请改用启用搜索。默认为true
SEARCH_ENABLEDfalse禁用查询API中的搜索以及收集器中支持搜索的任何索引或后处理。这不会禁用整个UI,因为按ID跟踪和依赖项查询仍在运行。使用其他服务(如日志)查找跟踪ID时禁用此选项。默认为true
QUERY_TIMEOUT:设置查询请求的硬超时。接受任何持续时间字符串(例如100ms)。值为0将完全禁用超时。默认为11秒。
QUERY_LOG_LEVEL:写入控制台的日志级别,默认为INFO
QUERY_NAMES_MAX_AGE:控制MAX AGE头的值zipkin服务器在http请求UI中的自动完成值时响应(例如服务名称)。默认为300秒。
QUERY_LOOKBACK:查询从结束Ts可以回溯多少毫秒;默认为24小时(两个每日存储桶:一个用于今天,一个用于昨天)
STORAGE_TYPE:存储类型:Span存储实现:mem、mysql、cassandra3、elasticsearch之一
COLLECTOR_SAMPLE_RATE:收集器采样率:要保留的记录道百分比,默认为“始终采样”(
1.0)。
AUTOCOMPLETE_KEYS:自动完成键:将由
/api/v2/AUTOCOMPLETE Tags端点返回的span标记键列表;标记键应以逗号分隔,例如“instance id,user idenv
AUTOCOMPLETE_TTL:禁止调用写入相同的AUTOCOMPLETE键
/值对的时间(毫秒)。默认值3600000(1小时)

 

 

 


五、实际项目发送请求,配置Zipkin链路追踪
消费者服务提供者都要加上Zipkin和配置

记得要先启动zipkin-server:

java -jar zipkin-server-2.23.2-exec.jar

 

1、pom.xml引入依赖

<!--spring-cloud-starter-zipkin已经包含spring-cloud-starter-sleuth-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

 

2、application.properties文件配置

#zipkin 链路追踪配置
spring.zipkin.base-url=http://127.0.0.1:9411
#采用率值介于:0到1,1表示全部采集,默认的采样比例为: 0.1(即10%)。
spring.sleuth.sampler.probability=1

 

3、Controller服务调用
省略。


本示例基于(有全部代码):

https://www.cnblogs.com/fanshuyao/p/14577910.html

 

4、测试zipkin 链路追踪
输入地址访问消费者的接口,消费者再调用服务提供者的接口,返回结果。
例如:

http://127.0.0.1:8805/web/get/1

 

返回结果:8801是服务提供者的端口,是由服务提供者返回的

{
"result": true,
"timestamp": "2021-03-26 16:55:14",
"msg": "操作成功。",
"datas": "端口=8801,text=1"
}

 

截图:

 

Zipkin 请求查询列表:

 

Zipkin 链路追踪详细

 


Zipkin宕机不影响服务接口的调用,但会有错误(只有一次错误,后面再调用服务接口,没有再报错)。

Zipkin宕机发生的错误:

2021-03-26 17:22:29.008  WARN [SPRING-CLOUD-NACOS-CONSUMER,,,] 8616 --- [/api/v2/spans}}] z.r.AsyncReporter$BoundedAsyncReporter   : Spans were dropped due to exceptions. All subsequent errors will be logged at FINE level.
2021-03-26 17:22:29.013  WARN [SPRING-CLOUD-NACOS-CONSUMER,,,] 8616 --- [/api/v2/spans}}] z.r.AsyncReporter$BoundedAsyncReporter   : Dropped 2 spans due to ResourceAccessException(I/O error on POST request for "http://127.0.0.1:9411/api/v2/spans": connect timed out; nested exception is java.net.SocketTimeoutException: connect timed out)

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://127.0.0.1:9411/api/v2/spans": connect timed out; nested exception is java.net.SocketTimeoutException: connect timed out
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:746) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    at org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRestTemplateWrapper.doExecute(ZipkinRestTemplateSenderConfiguration.java:228) ~[spring-cloud-sleuth-zipkin-2.2.7.RELEASE.jar:2.2.7.RELEASE]
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:639) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender.post(RestTemplateSender.java:129) ~[spring-cloud-sleuth-zipkin-2.2.7.RELEASE.jar:2.2.7.RELEASE]
    at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender$HttpPostCall.doExecute(RestTemplateSender.java:147) ~[spring-cloud-sleuth-zipkin-2.2.7.RELEASE.jar:2.2.7.RELEASE]
    at org.springframework.cloud.sleuth.zipkin2.sender.RestTemplateSender$HttpPostCall.doExecute(RestTemplateSender.java:137) ~[spring-cloud-sleuth-zipkin-2.2.7.RELEASE.jar:2.2.7.RELEASE]
    at zipkin2.Call$Base.execute(Call.java:380) ~[zipkin-2.21.7.jar:na]
    at zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.flush(AsyncReporter.java:299) ~[zipkin-reporter-2.15.2.jar:na]
    at zipkin2.reporter.AsyncReporter$Flusher.run(AsyncReporter.java:378) [zipkin-reporter-2.15.2.jar:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_241]
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_241]
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_241]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_241]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_241]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_241]
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_241]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_241]
    at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_241]
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_241]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[na:1.8.0_241]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[na:1.8.0_241]
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242) ~[na:1.8.0_241]
    at sun.net.www.http.HttpClient.New(HttpClient.java:339) ~[na:1.8.0_241]
    at sun.net.www.http.HttpClient.New(HttpClient.java:357) ~[na:1.8.0_241]
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226) ~[na:1.8.0_241]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162) ~[na:1.8.0_241]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) ~[na:1.8.0_241]
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990) ~[na:1.8.0_241]
    at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:76) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:737) ~[spring-web-5.2.13.RELEASE.jar:5.2.13.RELEASE]
    ... 9 common frames omitted

 

 

 

(时间宝贵,分享不易,捐赠回馈,^_^)

 

================================

©Copyright 蕃薯耀 2021-03-29

https://www.cnblogs.com/fanshuyao/

posted @ 2021-03-29 10:55  蕃薯耀  阅读(5374)  评论(1编辑  收藏  举报