温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Sleuth与ELK怎样进行配合使用

发布时间:2021-09-29 14:01:14 阅读:162 作者:柒染 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章为大家展示了 Sleuth与ELK怎样进行配合使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我们已经实现了服务调用之间的链路追踪,但是这些日志是分散在各个机器上的,就算出现问题了,我们想快速定位,也得从各个机器把日志整合起来,再去查问题。
这个时候就需要引入日志分析系统了,比如 ELK,可以将多台服务器上的日志信息统一收集起来,在出问题的时候我们可以轻松根据 traceId 来搜索出对应的请求链路信息。

ELK 简介

ELK 由三个组件组成:

  • Elasticsearch 是个开源分布式搜索引擎,它的特点有分布式、零配置、自动发现、索引自动分片、索引副本机制、restful 风格接口、多数据源、自动搜索负载等。

  • Logstash 是一个完全开源的工具,它可以对日志进行收集、分析并存储以供以后使用。

  • kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。

输出 JSON 格式日志

可以通过 logback 来输出 Json 格式的日志,让 Logstash 收集存储到 Elasticsearch 中,然后在 kibana 中查看。想要输入 Json 格式的数据需要加一个依赖,具体代码如下所示。

<!-- 输出 Json 格式日志 --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.2</version></dependency>

然后创建一个 logback-spring.xml 文件。配置 logstash 需要收集的数据格式如下:

<!-- Appender to log to file in a JSON format --><appender name="logstash"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}.json</file><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern><maxHistory>7</maxHistory></rollingPolicy><encoderclass="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{
                    "severity""%level",
                    "service""${springAppName:-}",
                    "trace""%X{X-B3-TraceId:-}",
                    "span""%X{X-B3-SpanId:-}",
                    "parent""%X{X-B3-ParentSpanId:-}",
                    "exportable":
                    "%X{X-Span-Export:-}",
                    "pid""${PID:-}",
                    "thread""%thread",
                    "class""%logger{40}",
                    "rest""%message"
                    }</pattern></pattern></providers></encoder></appender>

集成好后就能在输出的日志目录中看到有一个以“.json”结尾的日志文件了,里面的数据格式是 Json 形式的,可以直接通过 Logstash 进行收集。

{"@timestamp""2019-11-30T01:48:32.221+00:00","severity""DEBUG","service""fsh-substitution","trace""41b5a575c26eeea1","span""41b5a575c26eeea1","parent""41b5a575c26eeea1","exportable""false","pid""12024","thread""hystrix-fsh-house-10","class""c.f.a.client.fsh.house.HouseRemoteClient","rest""[HouseRemoteClient#hosueInfo] <--- END HTTP (796-byte body)"}

日志收集存入 ElasticSearch 之后,就可以用 Kibana 进行展示。需要排查某个请求的问题时,直接根据 traceid 搜索,就可以把整个请求链路相关的日志信息查询出来。

上述内容就是 Sleuth与ELK怎样进行配合使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4998596/blog/5026462

AI

开发者交流群×