3. 值班机器人架构设计
值班机器人是事故响应自动化的核心载体,其架构设计决定了故障自愈的时效性、扩展性与可靠性。本章从整体架构出发,逐层拆解事件输入、决策引擎、执行与反馈四个关键层次,帮助读者建立可落地的机器人设计模型。
3.1 值班机器人整体架构图
值班机器人采用分层解耦架构,各层职责清晰、接口标准化,便于独立迭代与灰度发布。整体架构分为四层:事件输入层、决策引擎层、执行层、反馈层。
架构设计原则: 各层之间通过标准化的 JSON 事件总线通信,避免直接耦合。决策引擎层支持热加载规则,执行层支持幂等操作,反馈层支持多渠道通知。
3.2 事件输入层
事件输入层是值班机器人的“感知神经末梢”,负责接收来自监控系统、日志平台、APM 以及第三方系统的各类告警与事件。该层需要解决多源异构事件的统一接入与标准化问题。
| 事件源类型 | 典型系统 | 接入方式 | 标准化字段 |
|---|---|---|---|
| 指标告警 | Prometheus / Grafana | Webhook / Alertmanager | alertname, severity, labels, annotations |
| 日志异常 | ELK / Loki / Splunk | HTTP Callback / Kafka | timestamp, message, level, host |
| APM 事件 | SkyWalking / Datadog | Webhook / gRPC | traceId, service, errorType, duration |
| 基础设施告警 | Zabbix / Nagios | Trap / SNMP | host, trigger, status, value |
| 工单/变更 | Jira / ServiceNow | REST API / Webhook | ticketId, action, assignee, priority |
关键设计点: 事件输入层必须实现 去重(相同告警在 T 秒内只入队一次)和 限流(防止告警风暴冲垮决策引擎)。建议使用 Redis 或内存布隆过滤器做快速去重。
3.3 决策引擎层
决策引擎是值班机器人的“大脑”,负责将标准化事件映射到具体的 Runbook 流程。该层采用规则引擎 + 策略路由的组合模式,支持动态调整。
决策引擎的核心能力包括:
- 规则匹配: 基于事件标签(severity、service、host)匹配预定义规则,支持正则与通配符。
- 条件判断: 检查事件是否满足执行前置条件(如维护窗口、依赖服务状态、频次限制)。
- Runbook 路由: 根据匹配结果将事件路由到对应的自动化 Runbook 或人工处理流程。
- 降级策略: 当规则匹配失败或执行超时时,自动降级为通知值班人员或创建工单。
避坑提示: 决策引擎的规则不要硬编码在代码中,应使用可配置的 DSL(如 YAML/JSON)或规则引擎(如 Drools、EasyRules),便于运维人员在不重启服务的情况下调整策略。
3.4 执行层
执行层负责将决策引擎下发的 Runbook 指令转化为具体的运维操作。该层需要保证操作的幂等性、可观测性与安全管控。
| 操作类型 | 典型动作 | 幂等保证 | 安全控制 |
|---|---|---|---|
| 服务操作 | 重启、停止、启动 | 状态检查 + 操作锁 | 操作审批、白名单 |
| 扩缩容 | K8s scale、ASG 调整 | 当前副本数校验 | 最大/最小副本限制 |
| 流量切换 | DNS 切换、负载均衡摘除 | 健康检查前置 | 灰度比例控制 |
| 配置变更 | 修改配置中心、环境变量 | 版本号 + 回滚快照 | 变更审批、差异对比 |
| 脚本执行 | Ansible、Shell、Python | 执行结果校验 | 超时控制、沙箱隔离 |
执行层最佳实践: 所有操作必须记录完整的执行日志(操作人、时间、参数、结果),并支持 一键回滚。建议使用任务队列(如 Celery、Temporal)管理异步执行,避免阻塞决策引擎。
3.5 反馈层
反馈层是值班机器人的“输出窗口”,负责将执行结果、故障状态、自愈进展实时通知到相关人员与系统。该层直接影响事故响应的透明度与协作效率。
反馈层包含三个核心通道:
- 即时通知: 通过钉钉、企业微信、Slack 等即时通讯工具推送告警与自愈进展,支持 @指定人 和 升级通知。
- 工单系统: 自动创建或更新 Jira、ServiceNow 工单,记录故障时间线、执行步骤与结果,便于事后复盘。
- 仪表盘: 实时展示值班机器人运行状态、今日处理事件数、自愈成功率、平均处理时长等关键指标。
反馈层设计要点: 通知内容应包含故障摘要、影响范围、已执行动作、当前状态、下一步建议。避免发送无意义的大量重复通知,建议使用 通知聚合(相同故障 5 分钟内只发一条汇总消息)。
通过以上四层架构,值班机器人实现了从事件感知、智能决策、自动化执行到结果反馈的完整闭环,为故障自愈提供了坚实的技术底座。