5分钟上手keep工作流引擎:像搭乐高一样编排告警自动化

5分钟上手keep工作流引擎:像搭乐高一样编排告警自动化

【免费下载链接】keep The open-source alerts management and automation platform 【免费下载链接】keep 项目地址: https://gitcode.com/GitHub_Trending/kee/keep

你是否还在为分散在CloudWatch、Prometheus、Datadog的告警处理焦头烂额?当生产环境突发故障时,是不是总在重复"查日志→发通知→建工单"的机械操作?keep工作流引擎让告警编排像GitHub Actions一样简单,通过YAML配置即可串联多系统能力,将运维响应时效从小时级压缩到分钟级。

读完本文你将掌握:

  • 3步完成告警→通知→工单的全流程自动化
  • 如何用条件判断实现告警分级处理
  • 多系统集成的实战配置模板
  • 工作流调试与监控的实用技巧

工作流引擎核心概念

keep工作流引擎采用声明式配置理念,通过YAML文件定义完整的自动化逻辑。核心组件包括:

  • 触发器(Triggers):定义什么条件下启动工作流,支持告警触发、定时触发、手动触发等多种方式
  • 步骤(Steps):工作流的执行单元,可调用外部系统API、查询数据库或执行脚本
  • 动作(Actions):定义最终执行的操作,如发送通知、创建工单或自动修复
  • 条件判断:通过CEL表达式实现复杂的分支逻辑

官方文档:docs/providers/overview.md

工作流基本结构如下:

workflow:
  id: 工作流唯一标识
  name: 工作流名称
  description: 工作流功能描述
  triggers:  # 触发条件
    - type: alert
      filters:  # 过滤规则
        - key: severity
          value: critical
  steps:  # 数据处理步骤
    - name: 获取客户信息
      provider:
        type: mysql
        config: "{{ providers.mysql-prod }}"
        with:
          query: "SELECT * FROM customers WHERE id = '{{ alert.customer_id }}'"
  actions:  # 执行动作
    - name: 创建工单
      provider:
        type: servicenow
        config: "{{ providers.servicenow-prod }}"

10行代码实现CloudWatch告警转Slack通知

最简工作流示例:当AWS CloudWatch产生告警时,自动转发到Slack指定频道。

workflow:
  id: cloudwatch-slack-notifier
  name: CloudWatch Slack Notifier
  triggers:
    - type: alert
      filters:
        - key: source
          value: cloudwatch
  actions:
    - name: trigger-slack
      provider:
        type: slack
        config: "{{ providers.slack-prod }}"
        with:
          message: "⚠️ AWS告警: {{ alert.name }}\n{{ alert.description }}"

上述配置实现了:

  1. 监听来源为cloudwatch的所有告警
  2. 当告警触发时,通过Slack provider发送格式化消息

完整示例:examples/workflows/slack_basic.yml

进阶实战:关键告警自动分级处理

对于企业级应用,我们需要更复杂的逻辑:仅处理严重级别告警,查询客户信息进行上下文补充,并根据客户等级决定通知渠道和工单优先级。

工作流设计

mermaid

完整配置示例

workflow:
  id: critical-alert-enrichment
  name: 关键告警自动处理流程
  description: 为严重告警补充客户信息并创建ServiceNow工单
  triggers:
    - type: alert
      filters:
        - key: severity
          value: critical
  steps:
    - name: get-customer-details
      provider:
        type: mysql
        config: "{{ providers.mysql-prod }}"
        with:
          query: "select * from customers where id = '{{ alert.customer_id }}'"
          single_row: true
          enrich_alert:  # 将查询结果附加到告警上下文
            - key: customer_name
              value: results.name
            - key: customer_tier
              value: results.tier
  actions:
    - name: create-servicenow-ticket
      if: "not '{{ alert.ticket_id }}'"  # 避免重复创建工单
      provider:
        type: servicenow
        config: "{{ providers.servicenow-prod }}"
        with:
          table_name: INCIDENT
          payload:
            short_description: "[{{ alert.customer_name }}] {{ alert.name }}"
            priority: "{{ '1' if alert.customer_tier == 'VIP' else '3' }}"
            description: "{{ alert.description }}"
          enrich_alert:  # 将工单信息回写到告警
            - key: ticket_id
              value: results.sys_id
            - key: ticket_url
              value: results.link

这个工作流实现了:

  • 仅处理严重级别(critical)的告警
  • 从MySQL数据库查询客户信息并附加到告警上下文
  • 根据客户等级自动设置工单优先级
  • 避免重复创建工单
  • 将创建的工单信息回写到告警

完整示例:examples/workflows/blogpost.yml

多系统集成能力展示

keep支持与130+种外部系统集成,覆盖监控、通知、工单、数据库等各类工具。部分常用集成包括:

工作流集成架构

  • 监控系统:CloudWatch、Prometheus、Datadog、New Relic
  • 通知工具:Slack、Microsoft Teams、[通讯工具]、Email(SMTP)
  • 工单系统:Jira、ServiceNow、Asana、Monday
  • 数据库:MySQL、PostgreSQL、MongoDB、ClickHouse
  • AI能力:OpenAI、Anthropic、LiteLLM、vLLM

完整集成列表:docs/providers/overview.md

工作流部署与监控

Docker快速部署

keep提供完整的Docker部署方案,包含API服务、UI界面和工作流引擎:

git clone https://gitcode.com/GitHub_Trending/kee/keep
cd keep
docker-compose up -d

相关配置文件:

工作流监控

工作流执行状态可通过UI界面实时监控,也可配置Prometheus指标导出:

工作流执行状态

关键监控指标包括:

  • 工作流执行成功率
  • 平均执行时间
  • 触发频率统计
  • 各步骤执行耗时

最佳实践与常见问题

工作流调试技巧

  1. 使用手动触发:在开发阶段添加手动触发器便于测试
triggers:
  - type: manual  # 允许从UI手动触发
  1. 日志输出:添加console类型步骤打印中间变量
steps:
  - name: debug
    provider:
      type: console
      with:
        message: "当前告警信息: {{ alert | to_json }}"
  1. 条件跳过:使用if条件控制步骤执行
steps:
  - name: only-vip
    if: "{{ alert.customer_tier == 'VIP' }}"

性能优化建议

  • 对高频触发的工作流使用节流控制
  • 复杂查询尽量在步骤中完成而非动作中
  • 合理设置超时时间避免资源占用

总结与进阶学习

通过本文介绍的工作流引擎,你已掌握告警自动化的核心能力。从简单的通知转发到复杂的跨系统编排,keep提供了与GitHub Actions类似的声明式配置体验,但专为运维监控场景优化。

进阶学习资源:

立即尝试将你的第一个工作流部署到生产环境,体验运维自动化的效率提升!

下期预告:使用AI能力实现告警自动分类与根因分析

【免费下载链接】keep The open-source alerts management and automation platform 【免费下载链接】keep 项目地址: https://gitcode.com/GitHub_Trending/kee/keep

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值