sentry-trace

链路跟踪

之前研究用jaeger 对程序进行侵入式的链路跟踪. 包括 http. grpc 协议的情况

sentry

最近我们新搭建了新版本的sentry, 发现了之前没有的 feature -> Performance
从前端 Vue 到 PHP 的 Lavaral 到 内部的 GO 服务, 尝试了一下链路. 效果基本满足我们的需求.

效果

这里只是一个例子, 对 Vue 和 Lavaral 的支持比较好, 整合的时候基本没有入侵代码. 能够自动进行跟踪. 包括:

  • 前端静态资源
  • http 请求自动分拆
  • 后端能够跟踪到具体 sql (Lavaral)

缺点也有一些:

  • SDK 不够完善. 后端继续向内部服务链路的时候可能需要改造中间件, 没有自动传送sentry-trace 头
  • 接受上游的 trace 的时候可能需要看看源码, 文档不是很完善
  • 很多语言框架无法自动采集链路, 需要自己在业务里写强侵入式的代码

采集上来的数据能够阶段性比较:

优化前性能指标

优化后

这样能够很明显的看出近期的改动是否有作用.
同时能够协助发现能够优化的地方

  • 比如接口过多
  • 静态资源过多, 或者过早引入
  • 接口没有并行触发
  • 慢 sql 等

给 Sentry 点赞

  • 保持了错误捕获相关的能力
  • 增强了 Tracing 和 Logging 的能力
    对一般的可观测性都能满足需求了, 而且覆盖了前后端, 不同语言和框架. 反正大不了就是自己看源码, 或者自己实现点逻辑, 已经很不错了