1 监控在微服务架构的地位
2 为何需要调用链监控?
- 在初期的单体应用,应用都打在一个包中,无分布式概念,监控也只需对一些埋点监控。
但是微服务时代下,很多服务在各自的包,一旦出现问题,没有调用链监控就很难定位问题!
3 没有应用监控可能带来的坑点
- 线上发布了服务,怎么知道一切正常?
- 大量报错,到底哪里产生的,谁才是根因?
- 人工配置错误,上线前通宵排错,结婚了还得来修 bug!
- 应用程序有性能问题,怎么尽早发现问题?
- 数据库问题,在出问题之前能洞察吗?
最后谁都查不出问题,全部甩锅网络问题~
可能出错的事总会出错!!!(墨菲定律)
微服务需要应用监控!!!
4 DevOps 实践
- 要提升先测量
开尔文曾经曰过:If you can’t measure it, you can’t improve it.
知道系统的当前性能指标,才知道该如何优化。 - 研发自主监控所负责的系统
5 Open Tracing
为了这些监控软件而规范,支持很多语言无缝切换。
监控演进史
eBay的老员工跳槽到点评后开发了 CAT。
开源产品对比
调用链监控主要适用于同步场景。异步调用一般不建议,因为异步多线程没有明确调用先后时序关系。实际有些场景(比如异步消息追踪)确实需要的话,也是可以做到的,原理就是在跨越线程边界的时候(类似跨越进程边界),需要把trace上下文向异步线程传递,具体做法一般需要定制。Skywalking的异步支持做的比较好,它提供的一些plugin有些已经支持异步追踪,如果你理解原理,也可以自己实现埋点,参考:
参考
- https://github.com/spring2go/cat_lab/blob/master/ppt/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E8%B0%83%E7%94%A8%E9%93%BE%E7%9B%91%E6%8E%A7CAT%E6%9E%B6%E6%9E%84%E5%92%8C%E5%AE%9E%E8%B7%B5.pdf
- https://zh.wikipedia.org/wiki/%E5%BA%B7%E5%A8%81%E5%AE%9A%E5%BE%8B