目录
一、监控指标如何选择
四个黄金信号(Four Golden Signals)。它指的是在服务层面一般需要监控四个指标,分别是延迟、通信量、错误和饱和度。
- 延迟指的是请求的响应时间。比如接口的响应时间、访问数据库和缓存的响应时间。
- 通信量可以理解为吞吐量,也就是单位时间内请求量的大小。比如访问第三方服务的请求量,访问消息队列的请求量。
- 错误表示当前系统发生的错误数量。这里需要注意的是, 我们需要监控的错误既有显式的,比如在监控Web服务时,出现4 * *和 5 * *的响应码;也有隐式的,比如Web服务虽然返回的响应码是200,但是却发生了一些和业务相关的错误(出现了数组越界的异常或者空指针异常等),这些都是错误的范畴。
- 饱和度指的是服务或者资源到达上限的程度(也可以说是服务或者资源的利用率),比如CPU的使用率、内存使用率、磁盘使用率、缓存数据库的连接数等等
二、监控数据的采集、处理和存储
一些流式处理的中间件,比如Spark、Storm。它们从消息队列里接收数据后会做一些处理,这些处理包括
- 解析数据格式,尤其是日志格式。从里面提取诸如请求量、响应时间、请求URL等数据;
- 对数据做一些聚合运算。比如,针对Tomcat访问日志,可以计算同一个URL一段时间之内的请求量、响应时间分位值、非200请求量的大小等等。
- 将数据存储在时间序列数据库中。这类数据库的特点是,可以对带有时间标签的数据做更有效的存储,而我们的监控数据恰恰带有时间标签,并且按照时间递增,非常适合存储在时间序列数据库中。目前业界比较常用的时序数据库有 InfluxDB、OpenTSDB、Graphite,各大厂的选择均有不同,你可以选择一种熟悉的来使用。
- 最后,你就可以通过Grafana来连接时序数据库,将监控数据绘制成报表,呈现给开发和运维的同学了。
1. 访问趋势报表。 这类报表接入的是Web服务器,和应用服务器的访问日志,展示了服务整体的访问量、响应时间情况、错误数量、带宽等信息。它主要反映的是服务的整体运行情况,帮助你来发现问题。
2. 性能报表。 这类报表对接的是资源和依赖服务的埋点数据,展示了被埋点资源的访问量和响应时间情况。它反映了资源的整体运行情况,当你从访问趋势报表发现问题后,可以先从性能报表中,找到究竟是哪一个资源或者服务出现了问题。
3. 资源报表。 这类报表主要对接的是,使用Agent采集的资源的运行情况数据。当你从性能报表中,发现某一个资源出现了问题,那么就可以进一步从这个报表中,发现资源究竟出现了什么问题,是连接数异常增高还是缓存命中率下降。这样可以进一步帮你分析问题的根源,找到解决问题的方案。