摘要:凌晨3点,我们的老演员,运维工程师小李,再次被钉钉机器人中监控的Prometheus的告警吵醒,他盯着手机屏幕,眼神呆滞,本着“小心驶得万年船,不可让一个故障漏网”的原则,他还是艰难地对抗了睡意,把所有系统健康指标进行逐一排查,如期所料,又是一起误报。
序言 “狼来了”
"叮咚!CPU使用率超过90%!"
"叮咚!内存占用达到80%!"
"叮咚!连接池资源空闲数低于5%!"
凌晨3点,我们的老演员,运维工程师小李,再次被钉钉机器人中监控的Prometheus的告警吵醒,他盯着手机屏幕,眼神呆滞,本着“小心驶得万年船,不可让一个故障漏网”的原则,他还是艰难地对抗了睡意,把所有系统健康指标进行逐一排查,如期所料,又是一起误报。
“悠悠苍天,何薄于我?这玩意监控了个寂寞呀。”
告警对于广大运维人员来说,真的是又爱又恨,不用长时间监控系统有异常之后通知运维人员,极大的节省了时间,但随着设备规模的大量增加,原本较少误报突然呈现了爆炸式的增长,从而使得“狼来了”式的告警逐渐降低了运维人员的警惕阈值,从而使得正真的故障狼来了之时,运维人员可能还蒙在鼓里,毫无反应。
前章 “AI智能体”
AI时代,是否有更好的解决方案?热烈欢迎本场的主角“AI智能体”上线。
AI智能体,通常是指能够感知环境、自主决策并执行动作以实现特定目标的一类人工智能系统。该系统结合了感知、推理、学习和行动能力,可以独立或在人工协同指导下完成任务。
那么如何通过构建AI智能体来处理Prometheus的告警呢?基本可以遵循如下的功能模块来处置。
▍一、感知模块
负责接收和处理来自环境的各类信息,为后续决策提供所需的数据支持。该部分的准确性和敏感度会直接影响到后续的处理。常见的感知模块一般可以使用如下方式:
文本感知:NLP模型(BERT/GPT)
图像感知:CV模型(YOLO/ResNet)
语音感知:ASR系统
▍二、认知引擎
负责记录相关故障处置的上下文信息及对应处置经验。按照信息存活时间及相关信息的固化特征可以分为:
短期记忆:对话上下文管理(LSTM/Transformer)
长期记忆:一般使用知识图谱、向量数据库
在构建对应的认知记忆过程需要遵循严格的标准,比如在AI智能体在处理Prometheus告警时,需要考虑如下的因素:
历史性:异常指标是否在相同周期内出现
全局性:异常指标在集群架构下影响力
价值性:何种严重程度需要提示为告警,把小李从床上拉起来
基础信息:持续时间、严重程度
关联关系:服务组来源信息
同时对于告警的处置结果执行方式也分为三个星级:
一星告警:"嗯。"(记录日志完事)
二星告警:"嗯?"(发个Slack消息)
三星告警:"啊!"(打电话+发短信+在办公室拉防空警报)
▍三、决策中心
该模块通过综合考虑各种因素,运用逻辑推理和概率统计等方法,做出最优决策。在大模型逐渐成熟的当下,该部分主要由各大模型来扮演,如DeepSeek、GPT等,相关介绍材料很多,在此不再赘述。
▍四、执行模块
依据决策中心提供的处理意见完成对应处理工作,设计的核心是完成与相关业务系统的交互与联动,通常可以通过如下方式完成:
API调用:OpenAPI规范封装
RPA操作:Playwright/Airflow集成
执行模块是最终呈现处置的关键部分,最终来衡量AI智能体在过程中非人工介入程度,与工具的对接的丰富度及耦合度决定了执行的准确性。
▍五、反馈系统
实现系统的持续自我优化,通过计算关键指标(如任务完成率、耗时)来进行效果评估。常见的模型更新:
在线学习:Bandit算法实时调整策略
离线训练:每周全量数据retraining
终章 “不看广告,看疗效”
▍第一回合:CPU使用率告警
Prometheus:"报!CPU冲到95%了!"
AI:"淡定,这是每日报表生成时间,你家CPU在996呢"
结果:标记为"预期波动",Slack发个已处理消息
▍第二回合:磁盘空间不足
Prometheus:"急急急!/var只剩5%了!"
AI:"(查看历史记录)发现这个分区每周三都会这样...等等,日志轮转脚本又睡懒觉了?"
结果:自动触发日志清理脚本,并在Jira创建工单:"日志轮转脚本又双叒叕偷懒了"
▍第三回合:数据库连接池耗尽
Prometheus:"药丸!连接池100%了!"
AI:"(0.1秒内扫描全链路)前端流量激增→促销活动忘了限流→这不是故障,这是KPI在发光啊!"
结果:自动扩容数据库实例+@市场部:"亲,下次搞活动记得提前说哦~"
写在最后:AI不是终点,而是起点
记住:
再智能的AI也干不过写bug的程序员
再精准的过滤也挡不住老板的突发奇想
最好的监控系统也永远有一个会骂“这什么破AI”的幕后运维小李
在完成该文章的过程中,消耗了作者4杯咖啡和12次对Prometheus的告警的亲切问候。
来源:易安联零信任