IT自动化运维平台建设:Zabbix告警、脚本任务与工单闭环
简介:《IT自动化运维平台建设解决方案》是一份面向运维工程师、运维主管及技术管理者的PPT方案,聚焦组织从人工运维向自动化、智能化演进中的平台规划与落地问题。文件共1个PPT,压缩包约4.35MB,已有1024人学习,适合用作内部立项、方案汇报或运维体系升级的参考底稿。内容围绕自动化运维概念、AIOps趋势、当前发展阶段展开,并给出数据整合、任务调度、智能监控、自动运维、风险诊断五阶段总体规划。配套页面还梳理运维现状与痛点、解决思路、总体架构、本期功能架构及告警到脚本下发、工单生成的整体流程,便于读者对照自身环境提炼建设目标、划分一期二期与远期任务。其价值在于把概念、架构、流程和实施路径放在同一套框架中,可帮助技术人员快速形成平台建设思路,也可为运维自动化项目汇报提供较完整的结构参考。
1. 从 1.5 万台设备的告警电话说起:这套方案要解决什么
一个运维团队要盯 1.5 万台主机和数通设备,Zabbix 采到指标异常就生成告警推到业务网管,值班工程师接电话、翻微信、登机器、敲命令,处理完在群里回一句“已恢复”。这套流程能跑,但跑得勉强:夜里两点的告警谁接、接了凭什么判断、敲的那条命令有没有留底,全靠当时那个人在不在状态。这份 IT 自动化运维平台建设解决方案要处理的,就是把这个“靠人”的循环换成“靠平台”的循环——不是买一套监控大屏,而是把周期性巡检、告警触发的处置动作、跨系统的工单流转收进同一套可配置、可追溯的机制里。它适合正从人工运维往自动化迈、手上有 Zabbix 和业务网管、又被夜间告警拖着走的团队。
2. 运维现状盘点:三个阶段的分界线与三类必须补的缺口
2.1 人工、自动化、智能化:分界线是指令从哪来
人工运维的样子很好认:运维人员负责机房和服务器选型、软硬件初始化、服务上下线、配置监控、盯监控,基本上是遇到什么问题解决什么问题。这个阶段的效率上限不取决于技术,取决于人的数量和在岗时长。设备规模一过万,人的数量就跟不上了,而且越往后越像在填坑——处置经验散在个人脑子里,人一走,坑就重新变成新坑。判断一个团队是不是还在这个阶段,看一件事就够了:凌晨的告警是不是还需要有人爬起来看屏幕。
自动化运维的定义在方案里写得很克制:把周期性、重复性、规律性的工作交给工具去做,具体落在三块——应用系统维护自动化、巡检自动化、故障处理自动化。这里最容易被讲空的是“工具”两个字。工具不是一堆脚本的集合,脚本谁都会写,难的是脚本被谁管、什么时候被触发、执行完结果谁看、看完了记在哪。所以方案里紧跟了一句:自动化运维依赖于管理平台。没有平台托着,脚本越多,运维反而越乱,这是很多团队踩过的第一道坎。
智能化运维也就是 AIOps,靠大数据和机器学习做海量数据的异常检测和多维度关联分析,增强或部分取代 ITOM 领域的三个能力——监测、服务管理和自动化。它解决的不是“执行”问题,而是“判断”问题:哪些告警是同一个根因、哪些指标恶化还没到告警阈值但值得提前动手、哪些历史故障和当前现象长得像。这三个阶段的真正分界线,是指令从哪来:人工阶段指令来自人的判断,自动化阶段指令来自预置的规则和定时策略,智能化阶段指令来自模型对数据的输出。把这个分界线想清楚,后面选型就不会乱。
| 阶段 | 指令来源 | 典型动作 | 对人的依赖 |
|---|---|---|---|
| 人工运维 | 人的现场判断 | 登机器、手工执行、口头交接 | 全量依赖,人不在则停摆 |
| 自动化运维 | 定时策略与技术/业务规则 | 周期巡检、告警触发脚本、工单流转 | 依赖责任人对结果的确认 |
| 智能化运维 | 模型输出的异常与趋势结论 | 趋势预警、根因定位、容量预测 | 依赖人对模型结论的复核 |
2.2 三类痛点摊开:任务无台账、告警无留痕、夜间无人守
第一类是周期性任务执行结果无法监控。脚本和配置由各运维工程师各自控制,放在自己习惯的目录、用自己习惯的命名、按自己记得的时间跑。执行成功没有、输出是什么、失败了几次,都没有系统化的统一管理。这个问题在平时不显形,一到季度巡检或者审计要材料的时候就露馅——你很难证明某台设备的磁盘检查真的做过,只能找到某个人的一句“我记得跑过”。
第二类是告警处理过程缺少监控记录。现阶段由运维工程师对告警信息做定位分析,根据故障分析结果处理,处理完就结束了。根因判断和经验处置没有被沉淀下来,于是同一个故障第二次发生时,换个人接手还得从头分析一遍。方案里把这条的后果说得很直接:若发生人员流动,告警无法处理,无法进行平滑交接。这不是夸张,值班表上少一个人,整个夜间响应链条就可能断掉。
第三类是被动式的告警处理方式。系统的动作永远发生在告警之后,而告警之后能不能第一时间被处理,取决于值班的人当时是否清醒、是否在电脑前。非工作时间的告警处理传报响应慢,这是运维最典型的“血泪经验”来源。三类痛点往下追,对应的是三个技术缺口:缺一套任务编排与执行记录机制、缺一个操作留痕与知识沉淀的承载物、缺一条不依赖人工在场的触发式处置通道。
提示:盘痛点的时候不要只写“效率低”“响应慢”这种结论词,要落到“哪个环节、缺什么机制、导致什么后果”。后面的方案设计和验收指标都是从这三段里长出来的,痛点写虚了,方案一定飘。
2.3 演进路线:一期建底座、二期上规则、远期接模型
方案给出的总体规划是分阶段实现 IT 运维的自动化与智能化,一期对应自动化运维,二期对应自主化运维,远期对应智能化运维。这个排序不是技术炫技的顺序,而是依赖关系的顺序,颠倒过来做基本都会返工。
一期是把明确的指令变成自动执行:根据故障告警及所配置的周期性任务这类明确指令,自动执行运维工作,比如基于故障告警自动执行修复命令、周期性任务脚本执行。这一期的关键词是“明确”——规则是人写的,脚本是人配的,平台只负责在正确的时机把它送到正确的机器上,并且把过程记下来。二期在一期的基础上加趋势判断:基于趋势型规则,根据指标数据自动发现故障并自动执行修复,比如基于趋势的自动运维、基于趋势的扩容缩容。远期才轮到模型:基于历史故障与日志数据,靠自学习模型发现潜在问题与风险并自行处理,比如基于历史重大事件的自动运维、基于历史数据分析的主动运维。
我一般会跟做这个题的人强调一句:一期不要碰模型。一期的价值在于把“执行”这条链路打通并且留下痕迹,没有这条链路,二期拿不到干净的执行数据,模型训练出来也没地方落。反过来,一期做扎实了,二期加规则只是往规则表里填数据,成本很低。这个演进节奏也直接决定了本期建设范围——只建告警、脚本、任务、工单、参数五个服务,加上流程引擎、消息引擎和系统管理,把底座搭稳,其余的中心留到后续阶段。
3. 总体架构设计:七大能力中心与一条告警主链路
3.1 四层架构:从对接层到前端的职责切分
整体架构按四层切分,从上往下依次是对接层、能力层、业务中心层和前端应用层。这样切的好处是每一层只对相邻层负责,换一个告警源或者换一个前端入口,不会牵动中间的业务逻辑。
对接层解决“数据从哪来、指令往哪去”,对接的系统包括业务网管、Zabbix Server、工单系统、CMDB、云管平台、日志平台、大数据平台和机器学习平台。这一层做的事情看着简单——告警同步、工单状态同步、脚本下发、执行命令、数据采集,但每一件都是跨系统的契约问题,字段怎么映射、状态怎么对齐、失败怎么重试,都得在这一层收口。能力层是共用的基础设施,包含数据侧的采集、抓取、导入、过滤、清洗、标注,以及系统侧的用户管理、任务调度、消息管理、日志管理、安全管理和系统管理。
业务中心层是方案的主体,七个中心各管一段:监控管理中心管监控对象、监控指标、监控任务和监控告警;运维作业中心管资源、参数、脚本和工单;任务调度中心管任务创建、调度、执行监控和执行报告;智能诊断中心管风险类别、趋势识别诊断、事件识别诊断和机器模型诊断;规则管理中心管技术规则、业务规则、规则作业和规则模型;运维分析中心管告警故障统计、运维作业分析、故障风险报告和系统优化建议。前端应用层分 PC 端和移动端两条线,门户给管理岗看全局,大屏给值班室看状态,移动端负责告警推送和结果确认。
3.2 七个能力中心的边界与依赖方向
七个中心里,一期真正落地的是运维作业中心、任务调度中心和监控管理中心的主体功能,其余四个中心在这一期只做骨架。这个取舍要在方案里讲明白,否则评审时一定会被问“为什么智能诊断只有菜单没有功能”。
依赖方向是单向的:监控管理中心产生告警,规则管理中心给出处置方案,任务调度中心负责把方案变成一次带时间的执行,运维作业中心提供被执行的对象(脚本、参数、资源分组),执行结果回流到运维分析中心做统计,智能诊断中心在数据积累够之后介入。这里有个容易画错的箭头——很多人把智能诊断画在最上游,好像它先判断再触发。一期不是这样,一期是规则先命中,诊断能力只做事后归类和趋势提示,等历史数据攒够了再往前移。
| 中心 | 一期交付内容 | 后续阶段扩展 |
|---|---|---|
| 监控管理中心 | 监控对象、指标、告警列表、告警任务 | 多源告警归一、告警抑制策略 |
| 运维作业中心 | 脚本管理、参数管理、工单管理、资源管理 | 作业模板库、作业编排 |
| 任务调度中心 | 任务创建、调度、执行监控、执行报告 | 任务依赖编排、并发配额 |
| 规则管理中心 | 技术规则配置、规则与脚本关联 | 业务规则、规则模型管理 |
| 智能诊断中心 | 风险类别字典 | 趋势识别、事件识别、模型诊断 |
| 运维分析中心 | 告警故障统计、运维作业统计 | 故障风险报告、系统优化建议 |
3.3 主链路拆解:一条告警从进来到闭环的五步
这条链路是整个方案的核心流程,答辩时如果能把它讲顺,基本盘就稳了。流程是这样的:业务网管平台收集到告警信息后推送到自动化运维平台;平台根据规则服务和调度配置判断是否有对应的处置方案;有方案则调用 Zabbix Server 发送执行指令并监控执行过程;对于需要生成故障工单的告警,自动推送至工单系统,工单处理完成后完成闭环。
拆成五步看更清楚。第一步,业务网管产生告警并推送,平台侧做字段解析和去重。第二步,用告警类型和级别去规则表里找匹配项,找到指令就走自动路径,没找到指令就转人工处理,这条分支必须有,否则一旦规则没覆盖就是死路。第三步,把指令交给 Zabbix Server,由它向被监控对象下发远程命令,平台同时开启执行过程监控。第四步,执行完成后回读指标,确认状态是否真的恢复,这一步是很多方案漏掉的——脚本返回 0 不等于业务恢复。第五步,需要留档的生成工单推送工单系统,工单状态再同步回平台,运维人员做最终的结果确认。
角色在这条链路上分工明确。一线运维和值班主管看告警列表和执行状态,运维工程师配脚本、建任务、确认结果,运维主管管审批和执行过程管控,管理岗和职能人员主要看统计和风险报告。移动端承担告警推送、告警查询、指令下发和结果确认,解决的正是 2.2 里那个“非工作时间无人守”的问题——不是让人不睡觉,而是让需要人介入的那一小部分告警能在手机上三秒内被看到并处理掉。
4. 核心功能实现:任务、脚本、告警、工单四个服务的落地细节
4.1 任务管理:定时策略、脚本关联与执行结果确认
任务管理主要针对周期性任务,做四件事:设置定时触发策略、支持执行脚本的关联、支持任务的启用与禁用、支持执行结果的确认。这四件事看着平常,但第三件和第四件是这套平台跟“一堆 crontab”的根本区别所在——禁用意味着任务有生命周期,确认意味着执行结果有人负责。
一个任务的配置项我一般按下面这个结构定义,字段不多,但每个都对应一个后续会被追问的问题:谁建的、多久跑一次、跑哪个脚本、对哪批机器跑、跑多久算超时、结果要不要人确认。
task_id: TASK-CRON-0007 task_name: 核心库连接数巡检 type: cron # cron=周期性任务,alarm=告警触发性任务 schedule: "0 0/2 * * *" # 每两小时执行一次,表达式与调度引擎保持一致 script_id: SCR-0021 # 关联运维作业中心已上线的脚本 target_group: db-core # 对应 CMDB 中的资源分组,不直接写 IP params: threshold: 800 # 连接数告警阈值,由脚本读取,不在脚本里硬编码 need_confirm: true # 执行结果需责任人确认后才算任务闭环 timeout: 300 # 单位秒,超时由调度中心标记为异常并告警 owner: ops-team-a # 任务责任人,决定谁在移动端收确认提醒几个参数的用意值得单独说。target_group指向 CMDB 的资源分组而不是 IP 列表,这样机器上下线不需要改任务配置,改 CMDB 就行,否则每次扩容都要人肉维护任务,这是最容易腐化的地方。params把阈值这类可变项从脚本里抽出来,同一份巡检脚本可以挂到不同分组上跑不同阈值,脚本复用率一下子上去了。need_confirm决定任务执行完是自动闭环还是等人点头,一般巡检类任务开着,明确的修复类任务也建议开着,避免一次误判把好机器重启了。
任务执行结果的判定要分三层,不能只看脚本退出码:脚本自身返回码、平台记录的执行日志、以及执行后回读的关键指标。三层都过才算成功,任何一层异常都进异常列表并推送给责任人。任务执行报告按天和按周两个维度出,内容就是“应执行多少次、实际执行多少次、成功多少次、失败多少次、失败原因分类”,这份报告在验收和季度汇报时是最硬的证据。
4.2 脚本管理:预置式与集中式两条路的选型取舍
脚本管理实现脚本的统一管理,周期性任务和触发性任务通过关联脚本并触发任务策略来完成自动执行,脚本类型支持 shell、bat、Perl、Python、PowerShell。这里有一个必须做的选型:Zabbix Server 发送指令的方式有两条路。
方案一是执行脚本提前预置在各服务器端侧,作业平台与 Zabbix Server 进行指令通讯。优点是脚本固化在本地,出错概率较低,而且对 zabbix agent 账号所需的权限较小,无需提前赋权。缺点是灵活性低,改一次脚本要再次全网服务器同步;脚本配置的变更由运维工程师控制,需要单独赋权后作批量部署;脚本存放在服务器端,有被篡改的风险。
方案二是执行脚本在自动化作业平台维护和配置,客户端通过接收 Zabbix Server 远程命令执行。优点是脚本集中化管理,可管可控;灵活高效,需要调整时编辑后即时生效;风险高的脚本可以先经管理人员审批后配置;脚本执行过程详细记录,可追溯。缺点是对 zabbix agent 账号需要较高的执行权限,得提前赋权。
| 对比项 | 方案一:脚本预置各服务器 | 方案二:平台集中维护、远程执行 |
|---|---|---|
| 变更生效 | 需全网同步,周期长 | 编辑后即时生效 |
| 权限要求 | agent 账号权限较小 | agent 账号需较高执行权限 |
| 可控性 | 脚本散落,存在篡改风险 | 平台可管可控,支持审批 |
| 可追溯性 | 依赖各机器的本地日志 | 平台侧统一记录执行过程 |
| 适用场景 | 极稳定的基础脚本 | 需要频繁调整的运维作业 |
建议采用方案二,由自动化维护平台统一负责脚本管理,需要执行时以远程命令的方式执行。选它的理由不是功能多,而是它把脚本纳入了和代码一样的生命周期:新增、编辑、删除、导入、导出、查询,都留在平台上,谁改的、什么时候改的、改完第一次跑在哪台机器上,全部有据可查。方案一那个“被篡改的风险”在实战里不是理论问题,脚本放在目标机上,等于把执行逻辑交给了被管理对象。
远程执行这一侧要在 agent 配置上做三件事:开远程命令、开远程命令日志、限制执行用户。下面这几项是 agent 侧必须确认的配置,缺一项就会出现“平台显示下发成功,机器上什么都没发生”这类翻车。
# zabbix_agentd.conf 中与远程执行相关的关键项 EnableRemoteCommands=1 # 允许接收并执行远程命令 LogRemoteCommands=1 # 远程命令必须留日志,这是回溯的唯一依据 AllowKey=system.run[*] # 放开 system.run,范围按实际需要收窄 # 执行用户不要直接给 root,单独建一个仅具备运维作业所需权限的账号下发到目标机的执行包装脚本建议统一成下面这个形状,功能只有三个:开始留痕、执行、结束留痕并按约定返回码退出。看着朴素,但它解决了一个很实际的问题——脚本卡死时,平台至少能看到“开始执行”这条记录,知道问题出在脚本里而不是调度上。
#!/bin/bash # 由平台经 Zabbix Server 远程下发,$1=任务ID $2=脚本名 TASK_ID="$1" SCRIPT_PATH="/opt/ops/scripts/${2}" LOG_DIR="/var/log/ops-agent" mkdir -p "$LOG_DIR" # 执行前先落开始记录,防止脚本卡死时平台侧完全无痕迹 echo "$(date '+%F %T') START task=${TASK_ID}" >> "${LOG_DIR}/${TASK_ID}.log" bash "$SCRIPT_PATH" >> "${LOG_DIR}/${TASK_ID}.log" 2>&1 RC=$? echo "$(date '+%F %T') END task=${TASK_ID} rc=${RC}" >> "${LOG_DIR}/${TASK_ID}.log" # 退出码约定:0=成功 10=无需处理 其他=失败,平台按此三分支处理 exit $RC退出码约定这三个分支是刻意的。0 走成功闭环,10 表示条件不满足、本次无需动作(比如巡检发现连接数正常,不需要清理),平台不生成工单也不报警;其他值统一按失败处理,进异常列表推送责任人。如果不做这个区分,所有非 0 都被当成失败,异常列表一周就能堆到没人看,这是自动化平台最常见的失效方式。
4.3 告警管理:规则命中、指令下发与人工兜底
告警管理中的告警信息来源于业务网管平台,功能上支持执行脚本的关联、执行任务的启用与禁用、执行结果的确认。真正需要设计的是匹配逻辑:一条告警进来,凭什么判定它该自动处理、该用哪个脚本、该不该先审批。
规则表按告警类型和级别建立索引,命中后取优先级最高的一条,同时校验关联脚本是否处于上线状态、是否超过了该规则允许的最大自动执行次数。最后那个限制很重要,防止一条反复触发的告警把同一条修复脚本刷成死循环。
-- 告警进入平台后,按类型与级别匹配可执行的处置规则 SELECT r.rule_id, r.script_id, r.approval_required, -- 1 表示高风险脚本,需主管审批后才下发 r.max_exec_times -- 同一告警在窗口期内的最大自动执行次数 FROM ops_rule r JOIN ops_script s ON s.script_id = r.script_id WHERE r.alarm_type = :alarm_type -- 由业务网管告警字段映射得到 AND r.severity = :severity -- 告警级别,不同级别可配不同处置力度 AND r.enabled = 1 AND s.status = 'ONLINE' -- 脚本必须已上线,草稿态不参与自动执行 ORDER BY r.priority DESC LIMIT 1;查不到记录时不能静默失败,必须走人工兜底:告警照常进入告警列表,按值班表推送,同时在详情页给出“未匹配到处置规则”的提示。这条兜底路径的调用次数是个很有价值的指标——如果长期很高,说明规则覆盖不足;如果突然升高,往往意味着出现了新型故障。规则命中率我一般建议按周看一次,一期做到 60% 以上算合格,剩下的 40% 靠人工和后续补规则消化。
4.4 工单与参数:跨系统状态同步的收口点
当任务需要生成故障工单时,平台自动发送工单给工单系统,工单派发的同时,系统根据策略自动执行任务。这里的关键不是“发工单”这个动作,而是状态同步的双向性:平台要能把工单号回写到告警记录上,工单系统关单后要能把状态推回平台,平台据此把任务标记为闭环。单向推送的后果是两边数据对不上,月底统计时工单系统和运维平台各有一套数字,谁也说不清哪个对。
参数管理主要指系统变量这类全局性参数的管理,包括系统接口地址、邮箱配置等。看着是最不起眼的一个服务,实际上是整套平台的“后悔药”:Zabbix 地址变了、工单接口换了、告警推送的收件人调整了,都在这一个地方改,不用去翻代码或者改配置文件。我一般会把参数分成三组管理——连接类(各系统接口地址与凭证)、通知类(邮件、移动端推送的模板与接收组)、业务类(超时时间、重试次数、并发上限),分组的好处是交接时新人能按组理解,不用逐个猜用途。
5. 避坑与常见问题:五条上线后最容易翻车的地方
5.1 现象:脚本频频执行失败,日志里全是权限拒绝
原因基本都指向同一个地方——为了图省事,把 zabbix agent 的执行账号直接提成了高权限账号,或者干脆用 root 跑,但脚本里又调用了需要特定环境变量的命令,两边对不上。方案二选型时明确说过需要较高的执行权限,这句“较高”被理解成了“最高”,权限一放就没有边界了。
解决上分两步走。一是给执行账号单独建一个,只授予运维作业涉及的目录和命令的执行权限,用 sudo 白名单控制具体命令,而不是给全量。二是脚本里不依赖登录 shell 的环境变量,路径全部写绝对路径,需要环境变量就在包装脚本里显式 export。上线前拿一台非核心机器跑一轮全量脚本,把权限问题一次性暴露出来,比在生产上一个个试要省得多。
5.2 现象:一次网络抖动,平台收到几千条告警,规则引擎被打穿
原因是告警没有做收敛就直接进了匹配环节,上游一抖,同一台设备的多个指标、上下游的关联设备同时报警,规则表被高频查询压住,任务队列瞬间排满,反而把真正需要处理的那几条淹了。这是典型的“自动化放大了噪声”。
解决思路是三层收敛。第一层在对接层做去重和抑制,同一对象同类型告警在时间窗口内只保留一条。第二层在规则匹配前加一道并发闸门,同一规则在同一时间窗内的执行次数受max_exec_times约束,超了转人工。第三层给任务队列设置优先级,巡检类任务优先级低于故障处置类,队列满时先丢巡检。这三层不需要多复杂的技术,但必须在设计阶段就画进去,事后补会很别扭。
5.3 现象:出了问题要回溯,发现只有一句“执行成功”
原因是平台只记了结果状态,没记过程:谁触发的、执行了哪个脚本的哪个版本、参数是什么、输出去哪了。更常见的是脚本自己把日志打到本地临时目录,机器一重装或者一清理就没了。方案里对痛点的描述是“处理结果无痕迹,缺乏经验成果沉淀”,如果平台自己也这么干,等于把老问题原样搬进了新系统。
解决上把留痕拆成四个必存字段:操作人(人或规则)、时间戳、目标对象、执行内容摘要与结果。执行日志统一回传到平台侧存储,本地只留最近若干天的副本。对于触发式任务,还要把当时那条告警的完整报文存下来,否则事后根本无法复现判断依据。这一条在验收时是硬指标,抽十条任务,四条信息缺一条就算不合格。
5.4 现象:平台上线三个月,夜间告警还是没人及时处理
原因是移动端只做了推送,没做处理入口,工程师收到消息还得找电脑登录,一来一回十几分钟过去了。或者推送的接收人写死在配置里,值班表轮换之后,消息还在发给上周值班的人。这类问题不影响功能演示,但直接影响平台的口碑,一旦被认定“没用”,后面推什么都难。
解决上把移动端做成最小可用闭环:告警详情、执行指令、结果确认三个动作在手机上能完成,超过一定时间未确认的自动升级到值班主管。接收人从值班表读取,不写死。同时把“非工作时间告警从产生到首次动作的时间”作为一项常态指标挂着,中位数超过十分钟就该查原因了。
5.5 现象:脚本返回 0,平台标记成功,业务其实没恢复
原因是平台把脚本退出码当成了唯一判据。脚本能正常退出只说明它跑完了,不代表它干的事生效了。比如重启服务的脚本返回 0,但服务起来三秒后又挂了;清理磁盘的脚本返回 0,但清的是另一个分区。这个坑很隐蔽,因为报表上一切正常。
解决上强制增加一步“执行后回读”:任务配置里指定回读的监控项和期望值,执行完成后由平台向 Zabbix 拉取最新指标,符合期望才算成功,否则标记为“执行成功但未恢复”,单独列一类。这一类记录特别有价值,它往往指向脚本逻辑本身的缺陷,是优化规则库最直接的输入。
6. 验收与答辩:用一张表把“平台真的跑起来了”说清楚
这类方案最怕的验收方式是演示一遍点菜单:建个任务、点执行、看到成功提示,然后就结束了。评审的人心里会犯嘀咕——这东西是搭了个壳,还是真在用。我的做法是提前准备一张验收表,每一项都对应一个能当场调出来的数据,讲的时候按表走,不按功能菜单走。
| 验收维度 | 具体指标 | 取数方式 | 合格线 |
|---|---|---|---|
| 任务覆盖 | 纳入平台的周期性任务占原手工台账比例 | 任务列表比对原台账 | 不低于 80% |
| 任务闭环 | 执行后经责任人确认的任务占比 | 任务执行报告 | 不低于 95% |
| 自愈效果 | 命中规则、执行成功且指标恢复的告警占比 | 告警列表关联执行记录 | 一期不低于 60% |
| 执行留痕 | 操作人、时间、对象、内容、结果五项齐全的任务占比 | 随机抽查 10 条 | 100% |
| 响应时效 | 非工作时间告警从产生到首次动作的时间中位数 | 告警与操作时间戳差值 | 不超过 10 分钟 |
| 工单闭环 | 自动生成工单的关单率 | 工单状态同步记录 | 不低于 90% |
答辩环节有三个问题几乎必问,提前把答案想好。第一个是“为什么不直接上 AIOps”,回答落在一期没有干净的执行数据,模型没有输入,而且模型给出的动作最终还是要走同一条执行链路,先把链路建好,模型才有落点。第二个是“脚本集中管理后权限放开了,安全怎么保证”,回答落在审批、白名单、执行账号隔离和全量留痕这四道闸上。第三个是“规则没覆盖到的告警怎么办”,回答落在人工兜底路径和规则命中率的持续运营上,别把话说成“全覆盖”,那反而不可信。
演示顺序也讲究。先放一条真实发生过的告警,从业务网管推过来,平台匹配规则、下发指令、回读指标、自动关单,一条链路走完,中间不要切页面。再翻一条没匹配到规则的,展示人工兜底和后续补规则的入口。最后打开任务执行报告,让评审看到过去一周每天都在跑,而不是今天为了演示刚建的任务。
从那以后我每次做这类方案,都会在动笔写架构之前先把验收表列出来,列不出来就说明方案还没想清楚,得回去重盘痛点。这张表比任何一张架构图都更能说明问题,因为它逼着人回答“凭什么说它成了”。希望帮到你。
本文还有配套的精品资源,点击获取