• 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:我的软件springCloudipkinzipkin-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/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    算法笔记--数据结构--并查集
    帮助
    八数码难题神奇!!!
    题解 P1197 【[JSOI2008]星球大战】
    线段树1对于Pushdown的理解
    最短路问题之SPFA
    并查集(路径压缩)
    并查集(KRUSKAL算法)
    初识单调栈
    初识单调队列
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/14583439.html
Copyright © 2020-2023  润新知