3. 值班机器人架构设计

值班机器人是事故响应自动化的核心载体,其架构设计决定了故障自愈的时效性、扩展性与可靠性。本章从整体架构出发,逐层拆解事件输入、决策引擎、执行与反馈四个关键层次,帮助读者建立可落地的机器人设计模型。

3.1 值班机器人整体架构图

值班机器人采用分层解耦架构,各层职责清晰、接口标准化,便于独立迭代与灰度发布。整体架构分为四层:事件输入层、决策引擎层、执行层、反馈层。

值班机器人整体架构图 事件输入层 Prometheus Alert Zabbix Trap 日志异常 Webhook APM 告警 自定义事件 工单触发 决策引擎层 规则匹配 Runbook 路由 条件判断 优先级排序 去重/聚合 依赖检查 降级策略 执行层 API 调用 脚本执行 容器操作 配置变更 重启/扩缩容 流量切换 回滚操作 反馈层(通知 / 工单 / 仪表盘)
架构设计原则: 各层之间通过标准化的 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 流程。该层采用规则引擎 + 策略路由的组合模式,支持动态调整。

决策引擎内部处理流程 标准化事件 规则匹配 条件判断 Runbook 路由 执行 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 分钟内只发一条汇总消息)。

通过以上四层架构,值班机器人实现了从事件感知、智能决策、自动化执行到结果反馈的完整闭环,为故障自愈提供了坚实的技术底座。