1. 监控分类

我们在对系统服务做监控和告警时,通常是要指定一定的时间范围的。监控可以默认是近一天或近一小时的时间范围,可以手动选择更长或更短的时间距离,也可以指定起止时间,如上周的其中三天、上个月一整个月等。告警一般判断最近一段时间某项指标是否达标,如一天之内、一小时之内、五分钟之内、一分钟之内等。

1.1 业务

具体的业务上的监控和告警没有具体的标准,要依据业务特性和场景来分析和判定,指定的核心目的还是帮助我们及早发现数据上的异常情况,保持系统的高稳定性和准确性。

例如,我们对于某个数据每天的某个时间点应该有一定的值,没有就说明上游某个系统出问题了,可以通过告警来定位数据问题的来源。或者对于不同数据之间的差值和比例有一个合理的范围,超过这个范围就属于是数据异常,可以通过告警来对其进行快速感知预警。

1.2 服务运行

CPU

监控点 监控视图 告警
CPU使用率 使用率,按时间粒度折线图 使用率大于阈值持续一定时间

内存

监控点 监控视图 告警
内存占用率 占用率,按时间粒度折线图 占用率大于阈值

磁盘

监控点 监控视图 告警
磁盘读速度 按时间粒度折线图
磁盘写速度 按时间粒度折线图

网络

监控点 监控视图 告警
网络上传速度 按时间粒度折线图
网络下载速度 按时间粒度折线图

Goroutine

监控点 监控视图 告警
Goroutine数量 使用率,按时间粒度折线图

1.3 API接口

请求数量

监控点 监控视图 告警
请求数量 数量,按时间粒度折线图 请求数量为 0,用于持续频繁有接口调用的服务
分接口请求数量 饼图,表格
分模块/类别请求数量 饼图,表格
接口QPS 数量,按时间粒度折线图

错误

监控点 监控视图 告警
错误请求数量 数量,按时间粒度折线图 数量大于阈值
分接口错误请求数量 饼图,表格 某接口数量大于阈值
错误码分布 饼图、表格
错误接口分布 饼图、表格

成功率

对于不同业务场景和系统,成功率的要求不尽相同,对很多系统一般要求三个九(99.9%)的成功率足矣,而对于一些比较重要的系统可能会要求到四个九、五个九以上。

除了整体和分接口的统一成功率,我们还可以对于部分比较重要的接口配置更高成功率的告警。

监控点 监控视图 告警
整体请求成功率 成功率,按时间粒度折线图 成功率小于阈值
分接口请求成功率 饼图,表格 某接口成功率小于阈值
特定接口成功率 成功率,饼图,表格 特定接口成功率小于阈值

耗时

百分位耗时通常使用 P80 耗时、P90 耗时、P95 耗时、P99 耗时等,数字越大表示对接口耗时的要求越高,对时延稳定性和毛刺越敏感的业务要关注越高百分位的耗时。

对于不同的接口,做的事情不相同,不能用统一的耗时阈值来要求所有接口,应该根据场景对不同接口设置不同的阈值。

监控点 监控视图 告警
平均耗时 平均耗时,按时间粒度折线图 耗时大于阈值
百分位耗时 百分位耗时,按时间粒度折线图 耗时大于阈值
分接口平均耗时 饼图、表格
分接口百分位耗时 饼图、表格

其他

监控点 监控视图 告警
接口数量 数量
用户数量UV 数量,按时间粒度折线图
界面访问次数PV 数量,按时间粒度折线图
服务请求IP分布 饼图,表格

1.4 任务

任务数量

监控点 监控视图 告警
任务数量 数量,按时间粒度折线图 任务数量为 0,根据任务执行频率定判断时间跨度
分任务数量 饼图,表格
分类别任务数量 饼图,表格

错误

监控点 监控视图 告警
错误任务数量 数量,按时间粒度折线图 数量大于阈值
分任务错误数量 饼图,表格 某任务数量大于阈值
错误码分布 饼图、表格
错误任务分布 饼图、表格

成功率

不同业务场景成功率的要求不同,一般要求三个九(99.9%)的成功率足矣,对于一些满足幂等性可以重试的任务则不需要那么高的要求,对于一些必须成功的任务则配置更高成功率阈值的告警。

监控点 监控视图 告警
整体任务成功率 成功率,按时间粒度折线图 成功率小于阈值
分任务成功率 饼图,表格 某任务成功率小于阈值
特定任务成功率 成功率,饼图,表格 特定任务成功率小于阈值

耗时

对于不同的任务,做的事情不相同,不能用统一的耗时阈值来要求所有任务,应该根据场景对不同任务设置不同的阈值。

监控点 监控视图 告警
平均耗时 平均耗时,按时间粒度折线图 耗时大于阈值
百分位耗时 百分位耗时,按时间粒度折线图 耗时大于阈值
分任务平均耗时 饼图、表格
分接口百分位耗时 饼图、表格
任务等待时间 平均时间,百分位时间,最大时间,时间分布条形图 耗时大于阈值

1.5 外部系统接口

请求数量

监控点 监控视图 告警
请求数量 数量,按时间粒度折线图
分接口请求数量 饼图,表格

错误

监控点 监控视图 告警
错误请求数量 数量,按时间粒度折线图 数量大于阈值
分接口错误请求数量 饼图,表格 某接口数量大于阈值

成功率

监控点 监控视图 告警
整体请求成功率 成功率,按时间粒度折线图 成功率小于阈值
分接口请求成功率 饼图,表格 某接口成功率小于阈值

耗时

监控点 监控视图 告警
平均耗时 平均耗时,按时间粒度折线图 耗时大于阈值
百分位耗时 百分位耗时,按时间粒度折线图 耗时大于阈值

1.6 日志

数量

监控点 监控视图 告警
日志数量 数量,按时间粒度折线图 日志数量为 0
分级别日志数量 饼图,表格 错误日志数量占比高于阈值

错误

监控点 监控视图 告警
错误日志数量 数量,按时间粒度折线图 数量大于阈值
错误日志分IP数量 饼图,表格 某IP数量大于阈值

1.7 MySQL

连接数

监控点 监控视图 告警
连接数 数量,按时间粒度折线图

SQL执行

监控点 监控视图 告警
SQL执行数量 数量,按时间粒度折线图
SQL执行失败数量 数量,按时间粒度折线图 数量大于阈值
SQL执行成功率 成功率,按时间粒度折线图 成功率小于阈值
增删改查SQL数量 饼图,表格
平均执行时间 平均耗时,按时间粒度折线图 耗时大于阈值
百分位执行时间 百分位耗时,按时间粒度折线图 耗时大于阈值

慢查询

监控点 监控视图 告警
慢查询数量 数量,按时间粒度折线图 数量大于阈值
慢查询最长耗时与SQL 表格

1.8 Redis

连接数

监控点 监控视图 告警
连接数 数量,按时间粒度折线图

请求

监控点 监控视图 告警
请求QPS 数量,按时间粒度折线图

key

监控点 监控视图 告警
key数量 数量
top10大key 表格

1.9 Kafka

消息生产消费

监控点 监控视图 告警
消息生产速度 按时间粒度折线图
消息消费速度 按时间粒度折线图

未消费消息

监控点 监控视图 告警
未消费消息积压数量 数量,按时间粒度折线图 数量大于阈值