监控系统设计

stateDiagram-v2  数据收集 --> 数据分析  数据分析 --> 风险预测  数据分析 --> 故障告警  风险预测 --> 问题解决  故障告警 --> 问题解决  问题解决 --> 归档复盘

目标

典型架构

stateDiagram-v2  direction LR  采集器 --> 时序库  时序库 --> 告警引擎  时序库 --> 数据展示  告警引擎 --> 告警发送

监控维度

单服务单主机

主要监控主机的CPU、内存等数据以及服务所产生的日志

单服务多主机

如果所有主机都发生问题,那么可能是服务的问题

否则如果只是某一主机出现异常,问题定位就比较简单

同时,单一服务部署到多台主机,一般需要负载均衡器来分发请求,所以也要对负载均衡器进行监控

多服务多主机

此时问题定位就没那么容易了,必须收集到足够多的数据

监控范围

监控需要分层级,除了系统层级诸如 CPU 内存之类的数据,同时也要支持在需要时,能深入进程、线程级别的定向监控

方法

嵌入式监控

分离式监控

指标

黄金指标

USE(Utilization Saturation and Errors)法

以及 RED 法

延迟

流量

错误

饱和度

百分比指标

中位值

算数平均值

四分位数

百分25 百分50 百分75

系统指标

响应时间RT

RPS

TPS

QPS

并发用户数

业务指标

监控述求

告警治理

告警分级

告警渠道

告警规则

告警模板

告警升级

在第一责任人收到告警之后没有及时响应,然后系统自动通知二线、三线人员的一种机制

告警收敛

三级收敛,event -> alert -> incident

重复的告警、相关联的告警进行收敛聚合,以方面协作及信息同步

故障协同

多团队协作共享信息共同解决复杂告警与故障的系统化机制

告警自愈

检测到系统异常或故障时,通过自动化脚本或工具,无需人工干预就能自动采取修复措施

易用性

综合监控

通常可以对系统一些资源指标进行监控,判断实际值是否超出设定的阈值,但这些数据并不能直接说明服务是否能正常工作

语义监控

通过端到端的测试来监控服务的工作正常与否

标准化

无论是日志的格式,还是工具,都需要标准化

考虑受众

需要对日志的使用者,他们需要知道什么,想要什么以及如何消费数据等考虑清楚