应用监控:微服务时代监控及诊断的利器

2,126 阅读5分钟
原文链接: mp.weixin.qq.com

微服务架构随着容器技术的发展越来越成为应用架构的主流。微服务架构带来了很多好处,比如每个服务都比较简单,只专注于一个业务功能;服务之间松耦合,可以提供更高的灵活性;每个服务可由不同团队独立开发、部署,互不影响,提高开发效率等。

事分两面,微服务架构一方面带来了灵活性及开发效率的提升,另一方面也带来了复杂性,需要有相应的工具链去解决。

比如,微服务架构不可或缺的 CI/CD,如果没有相应的工具链,运维成本将会很高。虽然微服务之间松耦合,但因为服务的拆分及独立部署,服务间的依赖关系会越来越复杂,伴随着服务间调用方式的多样化(HTTP 接口,RPC,消息中间件等),微服务场景下的监控及诊断都会面临不小的难度。

网易云应用监控就是为了解决微服务架构下的监控及诊断问题而给出的解决方案。

大家考虑下如下的一些场景和问题:

  • 做为一个产品,它的整体服务质量如何?

  • 服务间调用的负载及质量如何?

  • 每个服务的负载如何?哪些服务出现问题了?

  • 出现的问题是怎么造成的,内部错误还是因为慢?怎么定义慢?

  • 有问题的请求是因为哪一环出问题?怎么定位相关的日志或者异常?

      ...

这些问题都需要有效的工具去解决。

传统监控系统主要以机器资源的监控为主,缺少应用层面的监控,也没办法跟踪到单个请求的每一个环节。网易云应用监控通过无侵入的方式获取应用监控数据,基于全链路跟踪技术跟踪到每一个请求的每一个环节并关联关键信息,一方面可以对服务质量有全局把控,另一方面,可以为问题诊断提供有效帮助,提高运维效率。

目前,网易云应用监控提供了服务拓扑图,健康状态,应用指标监控,慢响应监控,请求快照(全链路跟踪)等核心功能。

服务拓扑图

基于服务的实时请求数据生成,可以从全局层面对所有服务的状态进行把控,也可以观察到各个服务之间的调用负载及质量,单个服务的质量也体现在拓扑图上(如下图的 lion.two)。

(点击图片放大查看)

健康状态

服务的健康状态反映了服务当前发生问题的严重程度,帮助用户快速识别有问题的服务。健康状态分为两类,一般警告及严重警告,代表不同的问题级别(上面拓扑中 lion.two 的黄色代表一般警告)。

(点击图片放大查看)

应用指标监控

应用指标监控可以对服务的负载及质量情况提供最基础的监控信息,包含响应时间,请求频率,错误率等。

(点击图片放大查看)

针对错误请求,我们也会给出错误详情,如具体发生的时间,发生问题的请求地址及所属的服务等:

(点击图片放大查看)

慢响应监控

一般监控会以绝对阈值为指标监控接口质量,如响应时间是否大于指定值,但这种方式的问题是,不同接口可能会完成不同类型的任务,导致响应时间可能在不同区间内,如果设置成统一的阈值,就会产生误报。网易云应用监控使用基于历史数据生成的基线来判断接口是否正常。

慢响应分为三个级别:慢响应,极慢响应,无响应,分别对应响应时间平均值的 3 倍标准差,10 倍标准差及 300 倍标准差。在计算基线时,除了正常的请求,还要考虑慢响应对基线的影响,在接口确实因为业务调整而导致响应时间有变化的时候,基线也要能跟随着调整到正确的值。

类似错误请求,所有慢响应我们都会给出请求详情:

(点击图片放大查看)

请求快照(全链路跟踪)

请求快照通过全链路跟踪技术把单个请求经过各个服务的调用数据关联起来,如性能数据(服务间调用性能,访问中间件的性能等),异常堆栈信息,错误日志信息等,在需要定位问题时,可以根据整个调用链中的信息快速定位问题。

之前提到的错误请求,慢响应都可以查看对应的请求快照。

(点击图片放大查看)

总结

目前,网易云应用监控提供的核心功能为微服务架构下的监控及诊断的一些痛点问题提供了解决方案,可以有效地帮助开发或者运维人员提高运维效率。当然,该服务刚上线不久(公测中),还在不断完善中,后续我们希望能够整合日志处理系统的数据,进程数据(如 JVM 相关数据),机器监控数据等为开发者提供更完整的监控及诊断服务,一站式的解决日常的运维需求。

最后,晒一张网易云基础服务中部分服务的拓扑图:

(点击图片放大查看)

-END-