AI全栈知识17:AIOps - 用AI做运维

📅 2026/8/24 14:22:12
AI全栈知识17:AIOps - 用AI做运维
AI全栈知识17AIOps - 用AI做运维写在前面作为运维工程师你每天面对的是告警风暴一个故障触发几十上百条告警真正有用的可能就几条日志大海捞针几十GB日志里找那一行关键错误故障排查靠经验一个一个排除耗时耗力容量规划凭感觉加资源不是多了浪费就是少了出事这些痛点AI能帮上忙吗答案是能帮但有边界。AI不是来替代运维的是来帮你处理那些数据量大、重复度高、人看不过来的活。这篇帮你搞清楚AIOps能做什么、不能做什么、怎么落地。AI在运维中的定位AI擅长什么能力运维场景为什么AI比人强处理海量数据从100万条日志中找异常人看不完AI秒扫发现隐藏关联告警A和告警B其实是同一个故障引起的人容易遗漏AI能全局关联不疲劳7x24盯着监控数据人会走神AI不会趋势预测按当前增速磁盘3天后会满人凭感觉AI算数据模式识别这个日志模式跟上次OOM故障很像AI见过的案例比人多AI不擅长什么局限说明还是需要人缺乏经验直觉无法判断指标正常但感觉不对资深运维的直觉很重要不懂业务上下文不知道这个服务明天有大促活动需要人提供上下文不能做决策能说可能是OOM不能决定是扩容还是优化代码方案选择需要人未见过的故障全新类型的故障没有历史数据参考需要人的创造性排查误判风险可能把正常的发布当成故障需要人确认正确的分工AI的角色助手不是替代者 告警来了 AI帮你过滤90%噪音筛出5条真正需要看的 人判断严重程度决定怎么处理 出故障了 AI快速关联日志、指标、事件给出可能的原因排名 人验证AI的推测做最终判断和修复 日常巡检 AI自动扫描异常趋势提前预警 人决定是否需要行动AIOps四大方向方向解决什么问题难度落地程度智能告警降噪告警太多看不过来中较成熟日志异常检测海量日志中找异常中较成熟根因分析故障原因是什么高探索中容量预测什么时候资源会不够低较成熟方向一智能告警降噪痛点一个磁盘满了可能触发告警1磁盘使用率 90% 告警2写入延迟升高 告警3Pod liveness探测失败 告警4服务响应5xx增加 告警5下游服务超时 告警6数据库连接失败 ...可能几十条半夜手机响了20次其实都是一个问题引起的。AI怎么做第一步告警聚合把时间上接近、内容相关的告警合并成一组defcluster_alerts(alerts,time_window300):5分钟内相关的告警聚合成一组clusters[]foralertinsorted(alerts,keylambdax:x[time]):mergedFalseforclusterinclusters:ifis_related(alert,cluster)andtime_diff(alert,cluster)time_window:cluster.append(alert)mergedTruebreakifnotmerged:clusters.append([alert])returnclusters第二步用LLM分析告警组defanalyze_alert_cluster(alert_cluster):让大模型分析一组关联告警promptf 你是一个资深SRE。以下是5分钟内触发的一组告警请分析 1. 这些告警的根本原因最可能是什么 2. 严重程度评估P1-P4 3. 建议的处理步骤 告警列表{format_alerts(alert_cluster)}returncall_llm(prompt)第三步结果输出原来手机响20次每条都要看 现在 [P2] 磁盘空间不足导致服务异常 关联告警20条已聚合 根因推测/data分区磁盘使用率95% 建议清理日志或扩容磁盘 只需要看这一条总结就行了。落地方案Prometheus告警 → AlertManager → Webhook → AI分析服务 ↓ 聚合 LLM分析 ↓ 发送精简摘要到钉钉/飞书方向二日志异常检测痛点服务每天产生几十GB日志。出问题时你要在里面找那几行关键错误你不知道搜什么关键词新型错误没见过错误可能不是ERROR级别有些WARNING就是前兆错误可能分散在多个服务的日志里AI怎么做方式一基于规则模式的检测传统方式增强# 不只看ERROR还看异常模式abnormal_patterns[rOOMKilled,rconnection refused,rtimeout after \dms,rretry attempt \d/\d,rcircuit breaker open,]# 检测突增某类日志突然比平时多了10倍defdetect_spike(log_counts,threshold10):avgstatistics.mean(log_counts[-60:])# 过去60分钟的平均currentlog_counts[-1]ifcurrentavg*threshold:returnTrue,f当前{current}条/分钟平均{avg}条/分钟returnFalse,None方式二用LLM分析日志片段defanalyze_logs_with_llm(log_snippet):把最近的异常日志片段发给LLM分析promptf 你是K8s运维专家。以下是最近5分钟的异常日志片段已经过滤出WARNING和ERROR级别。 请分析 1. 有没有需要立即关注的问题 2. 如果有最可能的原因是什么 3. 建议排查方向 日志片段{log_snippet[:3000]}# 限制长度控制Token returncall_llm(prompt)方式三日志向量化异常检测正常日志 → Embedding → 形成正常区域 新日志 → Embedding → 如果离正常区域太远 → 标记为异常 原理正常日志的模式是固定的突然出现不一样的模式就是异常。方向三根因分析痛点故障发生时有几十条告警、几个服务受影响、上百条错误日志。到底是谁引起的人类靠经验一个一个排除。AI靠关联分析。AI怎么做核心思路把所有信号关联起来找最早出问题的那个点。输入给AI的数据 1. 最近30分钟的告警列表带时间戳 2. 相关服务的关键指标变化 3. 最近的变更记录有没有人刚发布了什么 4. 异常日志片段 AI分析逻辑 - 时间线分析谁最先出问题 - 依赖关系A依赖BB先报错 → B可能是根因 - 变更关联10分钟前有发布 → 可能是发布引起的 - 历史相似这个模式跟上次XX故障很像用LLM做根因分析defroot_cause_analysis(alerts,metrics,changes,logs):promptf 你是资深SRE。当前有一个生产故障请根据以下信息分析最可能的根因。 ## 告警时间线按时间排序{format_timeline(alerts)}## 关键指标变化{format_metrics(metrics)}## 最近变更记录{format_changes(changes)}## 异常日志摘要{logs[:2000]}请分析 1. 最可能的根因是什么给出置信度高/中/低 2. 推理过程为什么这样判断 3. 建议的验证步骤 4. 建议的修复方案 returncall_llm(prompt)示例输出根因分析结果 最可能根因order-service 14:02的发布引入了内存泄漏置信度高 推理过程 1. 14:02有order-service的发布记录 2. 14:05开始order-service内存持续上升之前稳定在60% 3. 14:15内存达到limit触发OOMKilled 4. order-service重启后Pod CrashLoopBackOff 5. 依赖order-service的payment-service开始超时 6. 所有后续告警都是连锁反应 建议验证 kubectl rollback deployment/order-service 如果回滚后内存恢复正常确认是发布引起的 建议修复 1. 立刻回滚到上一版本 2. 排查新版本的内存泄漏点 3. 修复后重新发布当前局限方面说明准确率简单故障80%复杂故障可能只有50%依赖数据质量如果监控不全AI也分析不出来需要人验证AI给的是推测不是结论不能自动修复分析完还是需要人来执行修复方向四容量预测痛点“磁盘什么时候会满”“按这个增速节点还能撑多久”人只能凭感觉说好像快了。AI能给出精确的预测时间。AI怎么做基本方法线性回归/时间序列预测importnumpyasnpfromsklearn.linear_modelimportLinearRegressiondefpredict_full_time(history_data,threshold90):预测什么时候达到阈值Xnp.array(range(len(history_data))).reshape(-1,1)# 时间点ynp.array(history_data)# 使用率modelLinearRegression()model.fit(X,y)# 预测未来currentlen(history_data)forfuture_pointinrange(current,current720):# 预测未来30天(720小时)predictedmodel.predict([[future_point]])[0]ifpredictedthreshold:hours_leftfuture_point-currentreturnf预计{hours_left}小时后{hours_left//24}天达到{threshold}%return30天内不会达到阈值进阶方法用Prometheus的predict_linear函数# 按当前趋势预测磁盘4小时后的使用率 predict_linear(node_filesystem_avail_bytes[1h], 4*3600) # 预测多久后磁盘满 # 如果结果0说明预计会在N小时内用完 predict_linear(node_filesystem_avail_bytes[24h], 7*24*3600) 0告警规则# 预测磁盘3天内会满提前告警-alert:DiskPredictedFullexpr:predict_linear(node_filesystem_avail_bytes[7d],3*24*3600) 0for:1hlabels:severity:warningannotations:summary:预测{{ $labels.instance }}磁盘3天内将满AIOps落地路径别一上来就搞大的阶段做什么难度价值第一步容量预测predict_linear低中提前发现问题第二步告警聚合降噪中高大幅减少噪音第三步日志异常检测中中发现隐藏问题第四步根因分析高高加速故障恢复建议从容量预测开始Prometheus自带predict_linear不需要额外组件然后做告警降噪价值最大最后探索根因分析。你现在就能做的今天就能做 1. 给关键资源加predict_linear告警磁盘、内存 2. AlertManager配置告警聚合规则group_by 这周能做 3. 写一个简单的Webhook把一组告警发给LLM分析结果推到钉钉 下个月能做 4. 收集日志中的ERROR/WARNING模式定期让LLM分析趋势面试怎么说如果被问你了解AIOps吗了解。AIOps主要有四个方向智能告警降噪、日志异常检测、根因分析、容量预测。我的理解是AI在运维中的定位是’助手’不是’替代’。AI擅长处理海量数据和发现关联但最终的决策和执行还是需要人。我落地过的一是用Prometheus的predict_linear做容量预测告警提前3天预警磁盘不足。二是写了一个告警聚合服务把5分钟内的关联告警合并后发给LLM分析输出一条精简摘要推到钉钉群值班的人只需要看这一条摘要就够了告警噪音降了90%。根因分析方面目前是把告警时间线最近变更关键指标变化一起发给LLM让它推测根因。简单故障的准确率还不错复杂的还需要人确认。延伸思考问题答案AIOps需要很多历史数据吗容量预测需要至少7天数据告警降噪不太需要用LLM即时分析小公司适合搞AIOps吗predict_linear告警聚合零成本就能做。大规模的根因分析再等等AIOps会取代运维吗不会。AI做初筛和分析人做判断和执行。更像是给你配了一个7x24不休息的助手需要训练专用模型吗大部分场景不需要。用通用大模型好的Prompt就能做告警分析和根因推测有什么开源的AIOps工具百度的AIOPS平台开源了一些算法但完整方案还是自己搭更实用小结本篇核心收获AI的定位是助手做初筛/关联/预测人做决策/执行四大方向告警降噪、日志异常检测、根因分析、容量预测告警降噪价值最大聚合LLM分析噪音降90%容量预测最易落地predict_linear今天就能用根因分析最难准确率取决于数据完整度需要人确认落地路径从简单到复杂别一上来就搞大的系列总结恭喜你完成了AI全栈知识系列全部17篇回顾一下你学到了什么阶段篇号核心能力AI基础概念01-04理解大模型、Prompt、模型生命周期、应用架构主流框架05-08LangChain、RAG、向量数据库、Function CallingAgent开发09-12Agent原理、手写Agent、多Agent、部署运维综合实战13-17模型加速、GPU弹缩、可观测性、架构设计、AIOps学完后你的能力画像我理解大模型的工作原理用过LangChain开发过RAG和Agent应用 能设计AI应用的分层架构网关应用模型 了解模型加速方案量化/KV Cache 能做GPU资源弹缩和AI服务的监控体系 还有AIOps的落地经验告警降噪、容量预测。 另外我还有一个开源的AI运维Agent项目K8sChat。参考链接Prometheus predict_linearAlertManager告警路由AIOps白皮书Gartner百度智能运维开源LLM在运维中的应用