监控最佳实践-指标篇
监控指标分类体系
监控指标体系目前有三种主要的分类方式:
USE Method (from Brendan Gregg): Utilization, Saturation, and Errors
RED Method (from Tom Wilkie): Rate, Errors, and Duration
Google SRE book: Latency, Traffic, Errors, and Saturation
USE方法
- 利用率(Utilization):资源繁忙的时间百分比,例如节点CPU使用率。
- 饱和度(Saturation):资源必须完成的工作量,通常是队列长度或节点负载。
- 错误(Errors):错误事件计数。
主要适用场景:
基础结构中的硬件资源,例如CPU,内存和网络设备。
RED方法
- 速率:每秒请求,每天访问人数等。
- 错误:失败的请求数,
- 持续时间:这些请求花费的时间,延迟测量的分布
主要适用场景:
这种方法比较适用于服务级别,尤其是微服务。对于研发提供的服务,建议每个组件的服务都暴露一些这样的指标。因为RED 的方法比较适合做成看板和统计SLO。在grafana最佳实践中:建议一个服务做成一行,横向放置某一接口的速率和错误和持续时间。

SRE黄金指标
此方法与RED方法相似,但包含饱和度。
- 延迟(Latency):处理请求所需的时间
- 流量(Traffic):系统上有多少请求
- 错误(Errors):失败请求率
- 饱和度(Saturation):系统有多“满”,例如负载和队列积压。
主要适用场景:
属于较为通用的场景(合集),基本上是个筐,什么都可以往里装。
这里可以说一下Latency里面有一个重要的概念就是Apdex(Application Performance Index)这是一个从APM角度评价性能的标准,主要用于评价用户体验的。比如打开一个服务用的总延迟是多少,根据这个延迟进行一个评分,最后落到0-1之间。
指标分类对比
方法没有好坏之分,比如比较以下从USE和SRE的两个角度来对于基础设施监控的维度,其实都是可以的,只要适合自己的系统情况即可。
USE方法是我自己从经验角度来进行的归类。
SRE方法是来自https://www.jianshu.com/p/b01bc69fcc3b 的内容。
但更推荐看https://medium.com/@steve.mushero/linuxs-sre-golden-signals-af5aaa26ebae 里关于系统监控项的内容。
USE方法
CPU
- 利用率(Utilization):CPU使用率。
- 饱和度(Saturation):CPU负载。
- 错误(Errors):CPU错误
内存
- 利用率(Utilization):内存使用率。
- 饱和度(Saturation):内存换入换出。
- 错误(Errors):内存错误 OOM
磁盘
- 利用率(Utilization):磁盘使用率 inode使用率。
- 饱和度(Saturation):IO读写流量。
- 错误(Errors):IO
网络
- 利用率(Utilization):流量 收发包数 。
- 饱和度(Saturation):网卡带宽使用率。
- 错误(Errors):网络设备错误,丢包
TCP
- 利用率(Utilization):单个TCP收发包大小?。
- 饱和度(Saturation):TCP状态连接数。
- 错误(Errors):中断?
SRE黄金指标
后续
后面会针对grafana,使用对于监控指标的可视化方面做个大致的介绍。大致内容有
- Grafana as Code
- Gitlab grafana最佳实践
参考文档
https://www.youtube.com/watch?v=pOo0oKNM9I8
https://medium.com/faun/how-to-monitor-the-sre-golden-signals-1391cadc7524
https://mint.splunk.com/static/images/landing/splunk/network.png
https://grafana.github.io/grafonnet-lib/
https://xie.infoq.cn/article/be5d880666c29c66b7eff65dc
https://github.com/weaveworks/grafanalib
https://github.com/K-Phoen/grabana
https://sdgmf.github.io/goproject/