grafana最佳实践
前言
上次说到,后面会针对Grafana,使用对于监控指标的可视化方面做个大致的介绍。大致内容有
- Grafana最佳实践
- Grafana as Code
为什么要讲的是这两点?
前一阵子在做基础监控的项目,既然做监控就离不开展示,做展示大屏又离不开Grafana。做Grafana就想了解下知道最佳实践,最佳实践里有一条Grafana as Code。结合这个路子,正好在这里说几个做监控时的两个小感悟。
- 开源产品的展示页基本都比较丑:由奢入俭难,大部分的开源软件的自带dashboard基本上只是可用的级别。
- 开发都比较懒,运维也比较懒:如果你是做监控工具的,可以的话就帮开发运维把一些通用的dashboard都做好吧,一穷二白的指望他们自己做不太现实,大家都很忙。不管是出人搞定制化,还是用技术的手段。做工具的服务意识要有。
基于以上的两点,在SRE时代,关于大屏有三个点可能要了解和掌握:
- 了解监控指标分类体系,知道在Grafana上如何展示更直观和合理。
- 使用代码的方式批量去实现1。
- 做好培训和布道,帮助开发和运维去更好的使用,回到1。
The RED Method: How To Instrument Your Services [B] - Tom Wilkie, Kausal
https://grafana.com/files/grafanacon_eu_2018/Tom_Wilkie_GrafanaCon_EU_2018.pdf
将Prometheus,Grafana,RED和USE指标放在一起以改善监控
[一个用于生成Grafana仪表板的Jsonnet库](https://github.com/grafana/grafonnet-lib)
Tanka
网站性能优化
A beginner’s guide to good Grafana dashboard design
监控指标分类体系
监控指标体系目前有三种主要的分类方式:
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/