一、建立监控系统的概述
建立企业内部的监控系统,主要是从资源到业务的全面监控体系。一个完善的监控系统不仅能及时发现和解决问题,更能预防潜在风险,保障业务连续性。
二、 监控系统的分层架构
我认为一个完善的监控系统分为三个层次,自底向上分别为
- 资源监控: 基础硬件和操作系统层面的监控
- 服务监控: 中间件、数据库和应用层面的监控
- 业务监控: 与业务指标相关的监控
三、建立企业级监控的最佳时机
建立企业级监控系统的最佳时机是在系统规划阶段,有如下几点考量:
- 可以设立统一的监控标准和规范
- 避免后期改造的兼容性问题
- 监控系统的需求能够影响业务系统架构的设计
如果把监控系统的设计往后放,后期将会面临一个巨大的问题,就是推行和现有不兼容的规范,导致推广阻力重重。
四、全面监控体系的建立
系统资源监控
CPU监控
CPU监控是服务器性能监控中最核心的部分之一,它直接反映了服务器的计算资源使用情况和健康状态。以下是关于CPU监控的内容:
- 使用率: 包括用户态、内核态、IO等待等细分指标
- CPU负载: 1分钟、5分钟、15分钟的平均负载
- 上下文切换: 过多的切换会影响性能
- 温度: 防止过热导致降频或损坏
内存监控
内存监控是服务器性能监控的关键组成部分,它直接关系到系统的稳定性和应用程序的性能表现。以下是关于内存监控的内容:
- 内存使用量: 总内存容量、已用内存、空闲内存、缓存/缓冲内存、内存使用率
- 交换空间(Swap): Swap总量、Swap使用量、Swap活跃度
- 内存泄漏: 长时间运行后的内存增长趋势
网络监控
网络监控是服务器性能监控的重要组成部分,它直接关系到服务的可用性、响应速度和数据传输效率。以下是关于网络资源监控的内容:
- 带宽使用: 入站和出站流量
- 连接数: TCP连接状态(ESTABLISHED、TIME_WAIT等)
- 错误包: 丢包、错包、重传
- 延迟: 网络往返时间
- DNS解析: :解析成功率和耗时
硬盘监控
硬盘监控是服务器存储系统健康状态和性能表现的关键指标,直接影响数据安全性和I/O性能。以下是关于硬盘资源监控的内容:
- 空间使用: 磁盘使用率、inode使用率、分区监控、增长趋势
- 磁盘I/O性能指标: IOPS、吞吐量、I/O延迟
中间件与应用监控
消息队列(MQ)监控
消息队列作为分布式系统的核心组件,其监控对于保障系统可靠性、可扩展性和性能至关重要。以下是针对MQ中间件的监控内容:
基础健康指标
- 服务可用性:MQ服务进程/端口存活状态
- 连接数:当前活跃的生产者/消费者连接数
- 集群状态:节点角色(master/slave)、集群同步状态
- 资源使用:MQ进程占用的CPU、内存、文件描述符
消息吞吐指标
- 消息生产速率:每秒入队消息数
- 消息消费速率:每秒出队消息数
- 消息堆积量:队列中未被消费的消息总数
- 消息处理延迟:从生产到消费的平均耗时
消息可靠性指标
- 消息重试次数:消费失败后的重试次数统计
- 消息成功率:发送成功/失败比例
- 事务成功率:事务性消息的提交/回滚比例
- 死信队列大小:无法投递的消息数量
缓存监控
缓存作为系统性能的关键加速层,其监控需要覆盖健康状态、性能指标、命中效果等多个维度。以下是缓存监控内容:
基础健康指标
- 服务可用性:缓存节点存活状态、主从关系
- 连接数:当前活跃客户端连接数/连接池状态
- 资源使用:内存占用、CPU使用、网络吞吐、内存碎片率、大key分布、键数量
- 持久化状态:RDB/AOF状态(Redis)、缓存磁盘写入量
性能指标
- 响应时间:P99/P95读写延迟
- 吞吐量:每秒操作数
- 网络I/O:入站/出站流量(MB/s)
- 异常数:超时、连接失败等异常情况
缓存效率指标
- 命中率:按业务维度细分(如按key前缀)
- 淘汰率:因内存不足被驱逐的键数量
数据库监控
数据库监控是保障业务连续性的核心环节,是业务数据的核心存储。以下是数据库监控的内容:
连接池
- 总连接数:当前建立的连接总数
- 空闲连接:可用但未使用的连接
- 活跃连接:正在处理请求的连接
- 等待连接:因连接池耗尽而等待的请求
性能指标
- 慢查询:超过阈值的查询语句
- 大事务:执行时间过长或影响行数过多的事务
- 锁等待:因锁竞争导致的等待
- 复制延迟:主从数据库之间的数据同步延迟
业务接口监控
应用接口是业务功能的直接体现,监控内容包括:
可用性
- 健康检查:定期探测接口是否可达
- 成功率:请求成功与失败的比例
- 错误码分布:各类错误码的出现频率
关于错误码这边,我推荐在返回报文数据结构中使用两个返回码,分别是系统响应编码和业务响应编码。当出现系统响应编码失败时,可以先联系研发人员进行排查处理。当业务编码响应失败时,理论上来说更多的可能是业务语义的失败,根据失败的描述,接口调用者可先行检查业务侧的问题
性能指标
- 响应时间:平均响应时间及百分位值
- 吞吐量:TPS(每秒事务数)和QPS(每秒查询数)
- 并发数:同时处理的请求数量
我关于TPS的理解是一组逻辑相关的请求,而服务整体处理能力取决于处理能力最低模块的TPS值。QPS指服务器每秒能够响应的查询次数,用于衡量特定的查询服务器在规定时间内所处理流量多少,主要针对专门用于查询的服务器的性能指标
业务监控
业务监控将技术指标与业务价值直接关联,是整个系统建设最直接的反馈。
核心业务指标
不同公司不同业务系统的核心业务指标不同,无法罗列出来,所有整理一些通用的内容以供大家参考
- 转化率:关键路径的用户转化比例
- 订单量:成功创建的订单数量
- 支付成功率:支付流程的完成率
- 客单价:平均每个订单的金额
用户体验指标
- 页面加载时间:关键页面的渲染耗时
- 操作流畅度:用户交互的响应速度
- 错误率:用户操作失败的比例
业务异常
业务异常监控是保障系统健康稳定运行的"预警雷达",它能够及时发现业务运行中的偏离和风险,使研发以及运维人员尽早的介入。
数据完整性异常
- 空值/缺失值激增:关键字段缺失率超过阈值
- 数据格式异常:不符合预设格式的数据
- 枚举值越界:出现未定义的枚举值
业务量波动异常
- 同比/环比突降:当日案件数较上周同期下降
- 时段分布异常:非高峰时段的流量激增
- 渠道占比失衡:某渠道流量突然激增
五、总结
以上是我对企业监控系统建设的个人见解,受经验所限难免疏漏。若能为您的相关工作带来些许帮助,便是本文最大的意义。