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
消息生产消费
监控点 | 监控视图 | 告警 |
---|---|---|
消息生产速度 | 按时间粒度折线图 | |
消息消费速度 | 按时间粒度折线图 |
未消费消息
监控点 | 监控视图 | 告警 |
---|---|---|
未消费消息积压数量 | 数量,按时间粒度折线图 | 数量大于阈值 |