大型网站运维:从系统管理到SRE
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.6 监控智能化

随着产品技术不断演进和运维复杂度不断提升,运维工程师对运维手段多样化、运维方式便捷化、运维结果有效化等方面提出了更高的要求。本节仅从监控智能化方向阐述一些自己的理解和分析。

首先,监控智能化的目的不是代替运维工程师,而是对运维工作提供助益,减轻运维负担。其次,智能存在边界,智能不是魔法,智能并不能解决任何问题。最后,自动化也是智能,智能未必就是高深的算法。

智能在监控领域的一个典型实现是无阈值报警。对线上运维工程师而言,配置报警规则阈值是一件令人头痛的事情,一方面需要配置监控源的数量太多,如需要配置方法调用延迟监控的应用有数十个,每个应用中需要统计的方法数量有上百个,叉乘起来有上千个方法的报警阈值需要配置;另一方面,随着业务结构和状态不断变化,报警阈值也需要动态调整,因此曾经配置过的报警阈值还需要持续维护。另外在部分业务场景下的监控需求并不能简单地通过报警阈值来覆盖,如离线计算任务会在定时任务启动时有大量资源开销,非任务时负载较低,此时报警阈值还要和业务周期性结合才能提高报警有效性。

无阈值报警能解决上述痛点,从字面意思理解,无阈值报警并不需要针对某个数据源设置绝对阈值规则,而是通过判断数据曲线陡升陡降的特性来决策是否出现异常。无阈值报警会对监控曲线做波动性和周期性分析,进一步提高智能报警准确性,但算法并不能推断出业务的重要程度,也不能推断出运维工程师对数据波动的容忍度。因此无阈值报警依然需要人工干预,通过事前标记或事后反馈的方式,持续提升无阈值报警在具体业务场景下的报警准确度。

智能抑制和智能合并是智能监控的一个方向,能有效减少报警数量。智能抑制是在常规抑制手段的基础上,额外增加的一种抑制能力。智能抑制可以识别长时间或周期性触发报警的数据源,从而抑制无效报警。智能合并立足于报警相关性分析,能够压制同服务不同节点和同节点不同环境下的报警发送数量。智能合并还会基于相关性策略对报警进行归类,如合并调用延迟、中间件服务异常和合并 RPC 调用的多个服务等,合并后的报警会在精简内容后一并发给用户。

根因分析是智能监控的另一个方向,其目的是在故障发生时帮助运维工程师收集多方信息、剔除无效内容、梳理问题脉络和辅助用户定位问题。根因系统可以与发布和变更系统打通,获取故障前后的发布和变更信息;可以和各底层监控系统打通,获得故障时的网络情况、各层代理情况、服务执行情况等;还可以和链路系统打通,发现故障交叉点。根因分析准确性的提升依赖底层运维系统的陆续建设和运维工程师与开发工程师的持续维护,是协调各端系统、共享运维数据的典型实现。


[1] 不同企业的底层网络环境有所区别,强调网络隔离的企业会创建多个网络租户以实现网络隔离,部分对网络安全性要求较高的业务,也会主动隔离网络。

[2] 为降低用户接入成本,部分日志采集的日志输出逻辑仍然使用增强方式注入。

[3] 搜索引擎通常将近期写入的数据缓存在本地内存,这部分数据访问效率高。但访问历史监控数据需要在磁盘中加载,会触发监控数据冷热交换,加重监控数据检索负担。