ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

阿里云 ChatOps Agent 辅助告警响应:ECS 磁盘使用率从 80% 降到 34% 的排查与修复

阿里云 ChatOps Agent 辅助告警响应:ECS 磁盘使用率从 80% 降到 34% 的排查与修复 本文分享我们使用 阿里云 ChatOps Agent 处理云监控 ECS 磁盘告警的真实实践我们登录阿里云控制台在 阿里云控制台 ChatOps 对话框 中把告警信息发过去Agent 辅助我们完成诊断、分级清理和效果验证无需登录实例即可解除告警。背景告警处理还是人肉登录排查磁盘使用率告警是运维工作中最高频的告警之一。传统的处理流程通常是收到云监控短信/钉钉告警登录告警实例执行df -h、du -sh /*等命令逐级定位判断哪些文件、镜像、日志可以清理执行清理命令再次验证磁盘使用率是否下降。这个流程存在几个明显痛点重复劳动多每台实例都要重复相同的排查命令。依赖个人经验判断什么能删、什么不能删需要熟悉业务。排查效率差异大新员工可能连du -d 1 -h / | sort -h都要现查不敢轻易操作老员工凭经验知道常见大户是/var/log、/home/data/logs、Docker overlay2但经验很难跨业务迁移。同样的告警处理时间可能从 5 分钟到 30 分钟不等。响应时间长从告警发生到真正处理往往要几分钟甚至更久。缺乏审计记录手工执行的命令和结果难以沉淀。下图对比了传统人工排查与 阿里云 ChatOps Agent 自动化处理在效率、经验和审计方面的差异关键要点结合上图逐项对照时间成本人工排查平均需要 15-30 分钟尤其在不熟悉环境时Agent 从告警识别到生成方案通常只需 1-2 分钟。经验依赖人工处理高度依赖执行者的历史经验Agent 通过 Skill 和记忆将经验沉淀为可复用的处理路径。操作风险人工操作可能误删关键文件Agent 采用分级清理策略并在高危操作前要求我们确认。审计能力手工命令分散在终端历史中难以追溯Agent 的每次工具调用和输出都记录在会话中形成完整审计链路。可扩展性人工难以同时处理多起告警Agent 可以并行响应多个会话并将经验跨地域、跨业务线复用。ChatOps 实践经验做告警自愈时建议从有明确 SOP、风险可控的场景切入如磁盘清理、日志轮转、镜像清理把高危操作保留给人工确认。这样既能快速看到 MTTR 下降的效果又能在团队内建立对 ChatOps 的信任再逐步扩展场景。场景我们的 ECS 实例磁盘使用率告警某日我们的业务系统中的一台 ECS 实例触发云监控告警告警项内容实例名称某 OpenAPI 线上实例已脱敏实例 IDi-xxxxxxxxxxxxxxxxx地域西南 1成都告警规则磁盘使用率当前值80.03% 80%设备/dev/vda1应用分组某线上业务分组已脱敏我们登录阿里云控制台进入 阿里云控制台 ChatOps 对话框把告警截图贴进去并附上一句“看看咋回事”。Agent 识别到这是一条ECS 磁盘使用率告警属于 “Disk Issues” 场景随即自动加载对应的 ECS 诊断技能文档并声明将按照规范流程执行。实际处理中我们只需要给出最简单的指令Agent 就会按 Skill 里沉淀的排查流程自动执行后续步骤。阿里云 ChatOps Agent 处理流程1. 基础诊断阿里云 ChatOps Agent 收到指令后自动对实例执行基础诊断按照 ECS 诊断 Skill 里沉淀的 SOP 完成以下排查实例状态与平台事件检查调用 ECS OpenAPI 确认实例运行正常无进行中系统事件排除假性告警。监控指标趋势确认拉取/dev/vda1过去 6 小时磁盘使用率曲线确认是缓慢上涨到 80% 的渐进式告警。GuestOS 内部逐层分析通过 Cloud Assistant 进入实例执行df -h、du -sh /*、docker system df、du -sh /var/log/*、du -sh /home/data/logs/*等命令定位到 Docker 镜像、系统日志、应用日志是主要占用来源。结果汇总与占用结构化将诊断结果整理为结构化占用分析表明确最大可回收空间来自 Docker 镜像。目录/资源占用大小是否可回收说明Docker 镜像28.38G是130 个镜像大部分未被运行中容器引用/var/log旧备份与 journal约 3G是rpmdbdata 旧备份和过期 journal 日志/home/data/logs应用日志约 2G是可归档应用历史日志其他系统目录约 12G否系统文件和运行中容器到这里磁盘占用的构成已经清晰Docker 镜像是最大的可回收空间其次是系统日志和应用日志。Agent 基于这份分析再进入下一步的清理方案生成。远程命令执行的优势在于无需手动 SSH 登录同时所有命令和输出都被记录在会话中便于后续审计。2. 生成分级清理方案根据诊断结果阿里云 ChatOps Agent 输出一份结构化的ECS 磁盘告警诊断报告并给出三级清理建议下图展示了三级清理策略的分层结构以及每层对应的典型命令和风险等级关键要点结合上图逐项对照优先级 1清理不使用的 Docker 镜像。典型命令为docker image prune -a --force可释放大量空间且不影响运行中的容器。风险最低通常优先执行。优先级 2清理/var/log日志文件。包括过期 journal 日志、旧 rpmdbdata 备份、lastlog截断等。风险中等需要确认保留策略。优先级 3清理应用日志。路径如/home/data/logs/需根据业务实际情况清理或归档。风险最高通常需要我们确认。# 优先级 1清理未使用镜像dockerimage prune-a--force# 优先级 2清理系统日志journalctl --vacuum-time7d truncate-s0/var/log/lastlog# 优先级 3应用日志需按业务策略执行ls-lhS/home/data/logs/这种分级策略非常重要它把释放空间和业务安全平衡起来优先清理低风险、高收益的目标无用 Docker 镜像再处理日志等需要业务判断的资源。易踩坑点docker image prune -a会删除所有未被运行中容器引用的镜像。如果有重要但暂时未运行的镜像请先用docker images确认后再操作。Agent 在执行前会通过docker ps和docker images交叉验证降低误删风险。3. 人工确认后执行清理清理方案生成后阿里云 ChatOps Agent 并未直接执行高危命令而是等待我们点击确认。确认后Agent 依次执行远程命令并实时反馈执行结果。4. 验证效果清理完成后阿里云 ChatOps Agent 再次检查磁盘使用率并输出对比结果指标清理前清理后变化系统盘使用率80%45G/59G34%19G/59G⬇️ 46%Docker 镜像数130 个1 个-129 个Docker 镜像占用28.38G3.88G⬇️ 24.5G可回收空间28.12G0B已全部回收最终系统盘使用率从告警线 80% 降至 34%共释放 24.5GB 空间告警解除且仅保留 1 个活跃容器使用的镜像不影响业务运行。阿里云 ChatOps Agent 在此场景中的关键能力1. 基于记忆的经验复用阿里云 ChatOps Agent 具备长短期记忆能力。当第一次成功处理完成都地域的磁盘告警后Agent 会记住“这类 ECS 磁盘满的常见问题首先是 Docker 镜像堆积其次是/var/log日志最后是应用日志”。下一次再遇到其他地域例如杭州、北京的磁盘告警时Agent 不会从零开始逐层排查而是直接基于历史经验给出高概率的清理方案大幅缩短诊断时间。下图展示了记忆复用的完整链路第一次完整诊断沉淀为经验后续同类问题直接应用经验跳过重复排查关键要点结合上图逐项对照第一次处理遇到成都地域磁盘告警Agent 完整执行诊断、分级清理、效果验证并提取关键模式Docker 镜像堆积 /var/log日志 应用日志。记忆沉淀处理经验被存入记忆库与 ECS 磁盘告警场景关联。记忆内容不仅包括命令还包括优先级顺序、风险等级和验证方式。后续触发当杭州或北京地域出现同类告警时Agent 从记忆库召回相关经验。直接应用Agent 优先推荐高概率方案同时保留人工确认环节。如果环境有明显差异Agent 会回到完整诊断模式。ChatOps 实践经验记忆复用是降低重复排查的关键。我们的做法是第一次遇到某类告警时让 Agent 完整走一遍诊断流程沉淀有效路径后续同类告警直接基于记忆给出高概率方案。但要为 Agent 设置回退机制——当环境特征地域、实例规格、业务类型明显不同时回到完整诊断避免照搬旧经验。2. 自然语言告警解析我们无需记忆任何命令直接在 阿里云控制台 ChatOps 对话框 中贴入告警截图或文本Agent 即可理解告警类型、实例、地域、指标。3. 结构化诊断与经验沉淀除了记忆阿里云 ChatOps Agent 还会加载对应产品的诊断 Skill 作为基础框架。但更重要的是Agent 会把本次处理中验证有效的命令和策略沉淀下来与历史记忆融合。这意味着新人遇到同类问题时得到的不是冰冷的文档而是经过实战验证的处理路径。4. 远程命令安全执行通过远程命令执行工具在目标实例上执行命令无需手动登录机器。5. 风险分级与人机协同高危清理命令需要我们确认后才执行既保证了自动化效率又保留了安全边界。6. 变更前后对比与验证清理效果以表格形式量化呈现方便我们确认告警是否真正解除。推广价值把 阿里云 ChatOps Agent 接入告警响应流水线这次案例可以被推广为一套告警自愈的标准实践。下图展示了从云监控告警到告警解除的完整闭环关键要点结合上图逐项对照云监控告警作为触发源产生包含实例、指标、当前值、阈值等信息的结构化告警。告警机器人转发将告警信息自动转发到 阿里云 ChatOps Agent无需人工复制粘贴。识别场景并加载 SkillAgent 根据告警内容判断场景类型加载对应的诊断 Skill。自动诊断Agent 调用资源查询、远程命令执行等工具采集实例状态。生成修复方案基于 Skill 框架和历史记忆生成分级清理方案。人工确认高危操作前等待我们确认保留安全边界。自动执行清理确认后依次执行清理命令并实时反馈结果。验证效果清理后重新检查磁盘使用率确认告警解除。告警解除最终达到系统盘使用率低于阈值的状态。对运维团队而言推广这套模式的价值在于缩短告警 MTTR从收到告警 → 登录排查 → 手动清理压缩为告警自动派单 → Agent 基于历史经验直接修复。降低经验依赖处理过的告警会沉淀在 阿里云 ChatOps Agent 记忆中新员工无需背诵大量命令也能得到经过验证的清理方案。减少重复排查同类问题第二次出现时Agent 直接复用已有经验不再从头分析。沉淀审计记录每一次告警处理的操作、结果、时间都被完整记录便于复盘和合规审计。适用场景与边界阿里云 ChatOps Agent 告警自愈尤其适合以下场景磁盘使用率告警日志目录膨胀Docker 镜像/容器堆积临时文件未清理其他有明确 SOP 的低风险运维操作尤其适合以下人群运维新人无需记忆大量命令阿里云 ChatOps Agent 会基于历史记忆给出经过验证的处理方案。多业务线团队不同业务的日志路径、镜像策略不同Agent 会分别记忆各业务线的有效处理路径。值班/夜班场景减少对人的经验依赖降低疲劳状态下的误操作风险。但以下情况仍需要人工介入清理目标涉及核心业务数据告警根因不明可能是程序异常导致日志暴增需要应用层配合重启或配置变更涉及安全事件或入侵痕迹排查。结语阿里云 ChatOps Agent 正在从对话式运维工具演进为告警响应 自动诊断 修复执行的一体化 AIOps 入口。这次 ECS 磁盘告警自愈案例表明对于高频、标准化、低风险的运维问题Agent 已经能够以可量化、可审计、可复用的方式完成处理让运维人员把精力投入到更复杂、更有价值的场景中。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进