在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。集成类型都选择标准告警事件,不是 Microsoft Sentinel。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 标准告警事件,点击 保存
- 打开生成的集成卡片,复制 推送地址,形如
https://api.flashcat.cloud/event/push/alert/standard?integration_key=<集成密钥>
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 标准告警事件,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Microsoft Sentinel 中配置
整个流程分两步:先创建一个以 Microsoft Sentinel incident 触发器开头的 Logic App(Sentinel 里叫 playbook),再创建自动化规则去运行它。
创建 Logic App
- 创建一个 Logic App,工作流的触发器选择 Microsoft Sentinel incident。只有以事件触发器开头的 playbook 才能被事件类自动化规则选用
- 在触发器后添加内置的 HTTP 操作,按下一节填写各字段
- 保存工作流
创建自动化规则
进入 Microsoft Sentinel 的 Configuration → Automation(Defender 门户中为 Microsoft Sentinel → Configuration → Automation),点击 Create → Automation rule,创建下面两条规则,两条规则的动作都是 Run playbook,选择上一步的 Logic App:
如果 playbook 在下拉列表中显示为灰色,说明 Sentinel 对它所在的资源组没有权限:点击 Manage playbook permissions,勾选对应资源组并点击 Apply(需要该资源组的 Owner 权限)。
HTTP 操作
HTTP 操作各字段:
下面是这个 HTTP 操作的 JSON 定义,可以在 Logic App 的 Code view 中放进
actions。@ 开头的整段字符串是 Logic App 表达式,取值来自 Sentinel incident 触发器的输出,按 JSON 类型输出,标题里含引号也不会破坏 JSON:
字段映射
恢复与去重
- 事件被关闭(Status 变为
Closed)时,Logic App 发送event_status为Ok的事件,Flashduty 按相同的 Alert Key 关闭告警。 - Sentinel 在事件新增告警、评论、标签等更新时也会触发 When incident is updated。上表的更新规则只在状态或严重程度变化时运行;如果去掉这些条件,每次更新都会推送一次,同一 Alert Key 的重复事件会合并到原告警。
event_status必须是Critical、Warning、Info、Ok之一(首字母大写),其他取值会被 Flashduty 拒绝。- 一个事件包含多条 Sentinel 告警时,只推送一条 Flashduty 告警,标题和描述取自事件本身。
排查问题
- Flashduty 返回
InvalidParameter:检查event_status取值是否为首字母大写的四个枚举值之一,title_rule是否为空 - HTTP 操作返回 4xx 且提示认证或路由失败:推送地址缺少
integration_key,或复制的不是标准告警事件集成的推送地址 - 自动化规则没有运行 Logic App:确认 playbook 以 Microsoft Sentinel incident 触发器开头,并且已授予 Sentinel 对其资源组的权限
- 告警没有恢复:确认事件更新规则在状态变为
Closed时运行了,且 Logic App 运行记录里event_status的值为Ok