网站首页 > 技术文章 正文
上文讲到链路追踪赋予了我们tranceID、spanId、parentSpanId,这为我们提供了日志之间的关联关系。接下来我们需要通过这几个字段来为系统日志分析做下铺垫。大致思路如下:
- 将链路信息传入logger,并输出到日志文件中
- 将额外信息【如前端传过来的业务信息】传入logger,并输出到日志文件中
- 将日志格式化,比如说格式化为json
- 发送日志/采集日志
spring could sleuth中信息如何添加到日志中。
建议这里看官方文档-日志集成部分。
sleuth已经帮我们将链路信息存放到MDC中了。因此我们在日志文件中直接获取即可
%X{traceId},%X{spanId},%X{parentSpanId}
针对前段传递的额外信息。我们可以申明一个拦截器或者过滤器,获取对应字段。然后通过sleuth提供的tracer对象来将属性传递到MDC【实际上就是一个本地线程】中
//通过自动注入的Tracer对象创建baggage将信息传递到MDC中
//注意,如果说你 想让这些信息在整个链路中流转,那信息应该要尽可能的少,因为比较费时间。
this.tracer.createBaggage("A","B");
如此一来,我们的日志已经具备我们需要的所有信息了,可惜他现在是一个纯文本,解析起来很困难【解析是为了更好地呈现】。
日志格式化-logstash
通过添加logstash-logback-encoder依赖,再配置日志文件,就可以轻松实现日志信息json化。
UTC
{
"timestamp": "@timestamp",
"severity": "%level",
"service": "${springAppName:-}",
"trace": "%X{traceId:-}",
"span": "%X{spanId:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message"
}
日志汇聚
如今我们已经具备了一堆可解析的有效日志,接下来我们需要将日志汇聚到某一个可视化程序上帮助我们展示出来。
1:通过实现 EncoderBase
2:通过logstash做日志采集发送到指定位置。【这里的logstash已经指的是一种文件采集生态了,你想使用flume做日志采集发送也可以。没有差别】
到这里我想聊的东西已经聊完了,日志能够被采集之后,只需采集-解析-呈现即可。成熟的方案就是elk了。
流程已经通了,接下来需要的就是经验知识-如何设计日志字段才能更好的为业务,为系统做支撑?
关于页面埋点主要是通过事件监听,以及前端手动埋点去触发的,具体情况具体分析,这里就不好说啥了。
peace and love
- 上一篇: 微前端监控体系:从埋点到智能告警
- 下一篇: 埋点进阶(二):埋点治理最佳实践(埋点管理)
猜你喜欢
- 2025-03-26 由浅入深,66条JavaScript面试知识点(七)
- 2025-03-26 后端常见开发术语(监控告警)(后端监控什么意思)
- 2025-03-26 轻量级埋点sdk搭建,便捷更全面(sdk 埋点)
- 2025-03-26 埋点进阶(二):埋点治理最佳实践(埋点管理)
- 2025-03-26 微前端监控体系:从埋点到智能告警
- 2025-03-26 前端埋点方案(前端数据埋点方式)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)