链路跟踪
之前研究用jaeger 对程序进行侵入式的链路跟踪. 包括 http. grpc 协议的情况
sentry
最近我们新搭建了新版本的sentry, 发现了之前没有的 feature -> Performance
从前端 Vue 到 PHP 的 Lavaral 到 内部的 GO 服务, 尝试了一下链路. 效果基本满足我们的需求.
效果
这里只是一个例子, 对 Vue 和 Lavaral 的支持比较好, 整合的时候基本没有入侵代码. 能够自动进行跟踪. 包括:
- 前端静态资源
- http 请求自动分拆
- 后端能够跟踪到具体 sql (Lavaral)
缺点也有一些:
- SDK 不够完善. 后端继续向内部服务链路的时候可能需要改造中间件, 没有自动传送sentry-trace 头
- 接受上游的 trace 的时候可能需要看看源码, 文档不是很完善
- 很多语言框架无法自动采集链路, 需要自己在业务里写强侵入式的代码
采集上来的数据能够阶段性比较:
优化前性能指标
优化后
这样能够很明显的看出近期的改动是否有作用.
同时能够协助发现能够优化的地方
- 比如接口过多
- 静态资源过多, 或者过早引入
- 接口没有并行触发
- 慢 sql 等
给 Sentry 点赞
- 保持了错误捕获相关的能力
- 增强了 Tracing 和 Logging 的能力
对一般的可观测性都能满足需求了, 而且覆盖了前后端, 不同语言和框架. 反正大不了就是自己看源码, 或者自己实现点逻辑, 已经很不错了