Keep 工作流支持告警增强,这是一项强大的功能,允许您使用额外的数据增强告警,使其更具可操作性和意义。增强功能可以直接从您的工作流中向告警添加自定义字段或修改现有字段。
为什么需要增强告警?
- 提供上下文: 添加关键信息,如相关客户数据或工单 ID。
- 实现自动化: 在后续操作中使用增强的字段进行动态处理。
- 提高可见性: 显示基本元数据以便更好地决策。
如何增强告警
使用 enrich_alert 指令
enrich_alert 指令用于在动作中添加或更新告警中的字段。您可以指定键值对列表,其中:
key是要添加或更新的字段名。value是要分配给字段的数据。它可以是静态值,也可以从步骤或工作流的其他部分动态派生。disposable是一个可选属性,决定增强是否临时的,以及在收到新告警时是否应丢弃。如果 disposable 设置为 True,增强被添加到 disposable_enrichments 并标记为 dispose_on_new_alert=True。
带增强的工作流示例
yaml
workflow:
id: enrich-alert-example
description: Demonstrates enriching alerts
triggers:
- type: alert
steps:
- name: get-customer-details
provider:
type: mysql
config: "{{ providers.mysql-prod }}"
with:
query: "SELECT * FROM customers WHERE customer_id = '{{ alert.customer_id }}'"
single_row: true
actions:
- name: enrich-alert-with-customer-data
provider:
type: mock
with:
enrich_alert:
- key: customer_name
value: "{{ steps.get-customer-details.results.name }}"
- key: customer_tier
value: "{{ steps.get-customer-details.results.tier }}"在此示例中:
get-customer-details步骤根据告警获取客户数据。enrich_alert指令将customer_name和customer_tier添加到告警。
增强语法
键值对
每个增强都定义为键值对:
yaml
enrich_alert:
- key: field_name
value: field_value
disposable: true- 静态值: 对简单的增强使用静态字符串或数字:
yaml
- key: alert_source
value: "Monitoring System"-- 动态值: 使用从步骤、动作或告警本身派生的值:
yaml
- key: severity_level
value: "{{ alert.severity }}"条件增强
您可以将增强与条件结合使用以动态增强告警:
yaml
actions:
- name: enrich-critical-alert
if: "{{ alert.severity == 'critical' }}"
provider:
type: mock
with:
enrich_alert:
- key: priority
value: high高级用例
使用动作结果增强告警
增强可以使用动作的结果,允许基于先前步骤进行动态更新:
yaml
enrich_alert:
- key: ticket_id
value: "{{ actions.create-ticket.results.ticket_id }}"
- key: ticket_url
value: "{{ actions.create-ticket.results.ticket_url }}"增强工作流示例
此示例演示如何用 ServiceNow 的工单详情增强告警:
yaml
workflow:
id: servicenow-ticket-enrichment
triggers:
- type: alert
steps:
- name: fetch-alert-details
provider:
type: keep
with:
filter: "alert_id == '{{ alert.id }}'"
actions:
- name: create-servicenow-ticket
provider:
type: servicenow
config: "{{ providers.servicenow }}"
with:
table_name: INCIDENT
payload:
short_description: "Alert: {{ alert.name }}"
description: "{{ alert.description }}"
enrich_alert:
- key: ticket_id
value: "{{ results.sys_id }}"
- key: ticket_url
value: "{{ results.link }}"故障排除增强
在没有告警/事件的情况下增强
如果触发器中不存在告警/事件(例如间隔触发器或工作流页面中的手动调用),则增强规则将没有可应用的告警/事件。增强过程通常需要存在告警/事件才能应用指定的增强。没有告警/事件,增强规则将无法按预期执行。解决方法是使用 foreach 指令并传递包含 "fingerprint" 变量的对象。