本篇文章为系列文章,未读前几集的同学请猛戳这里:
本篇文章讲解 Sleuth 如何使用 Elasticsearch、Logstash、Kibana 分析追踪数据。
点击链接观看: ELK 环境准备视频 (获取更多请关注公众号「哈喽沃德先生」)
ELK是 elastic 公司提供的 一套完整的日志收集以及展示的解决方案 ,是三个产品的首字母缩写,分别是 Elasticsearch、Logstash 和 Kibana。
之前的课程中我们已经学习过 ELK 的详细使用,这里不再过多赘述,直接开启使用即可。
文中使用的 ELK 版本统一为 7.5.2。
Elasticsearch
集群地址为: 192.168.10.101:9200 192.168.10.102:9200 192.168.10.103:9200
Logstash
的地址为:
192.168.10.101:9250
Kibana
的地址为:
192.168.10.101:5601
Logstash 运行时指定的配置文件 log-to-es.conf 内容如下:
# 数据入口 input { tcp { mode => "server" host => "192.168.10.101" port => 9250 } } # 处理数据 filter { # 获取 @timestamp 的值并加上 8*60*60(北京时间比 logstash 中@timestamp 晚了 8 小时),然后赋值给变量 timestamp。 ruby { code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" } # 将 timestamp 值重新赋值给 @timestamp ruby { code => "event.set('@timestamp', event.get('timestamp'))" } # 删除变量 timestamp mutate { remove_field => ["timestamp"] } } # 数据出口 output { elasticsearch { hosts => ["192.168.10.101:9200", "192.168.10.102:9200", "192.168.10.103:9200"] index => "applog" } }
在需要进行链路追踪的项目中(服务网关、商品服务、订单服务)添加 logstash-logback-encoder
依赖。
<!-- logstash 编码依赖 --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.3</version> </dependency>
在需要进行链路追踪的项目中(服务网关、商品服务、订单服务)添加 logstash 输出 JSON 格式数据
。
logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> ... <!-- 为 Logstash 输出 JSON 格式数据 --> <appender name="LOGSTASH_PATTERN" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <!-- 数据输出目的地 --> <destination>192.168.10.101:9250</destination> <!-- 日志输出编码 --> <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <pattern> <pattern> { "severity": "%level", "service": "${springAppName:-}", "trace": "%X{X-B3-TraceId:-}", "span": "%X{X-B3-SpanId:-}", "exportable": "%X{X-Span-Export:-}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" } </pattern> </pattern> </providers> </encoder> </appender> <!-- 日志输出级别及方式 --> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="LOGSTASH_PATTERN"/> <appender-ref ref="DEBUG_FILE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="WARN_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> ... </configuration>
重启项目后,访问: http://192.168.10.101:9100 可以看到已经创建好了 applog
索引库。
访问: http://localhost:9000/order-service/order/1 查看索引库结果如下:
访问: http://192.168.10.101:5601/ Kibana 首页。
添加 applog 索引库。
不使用时间过滤器。
搜索 gateway 结果如下:
至此 Sleuth 链路追踪所有的知识点就讲解结束了。
本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议
。
大家可以通过 分类
查看更多关于 Spring Cloud
的文章。
您的 点赞
和 转发
是对我最大的支持。
:loudspeaker: 扫码关注 哈喽沃德先生
「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~