Notice::ACTION_EMAIL 动作把每条通知发成一封邮件,没有 Webhook。Flashduty 的 邮件集成 可以接收这些邮件,因此不需要单独的 Zeek 集成:在 Flashduty 创建邮件集成,把它的邮件地址配置为 Zeek 的通知收件人即可。
在 Flashduty On-call
您可通过以下两种方式获取集成邮件地址,任选其一即可。集成类型都选择邮件 Email,不是 Zeek。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 邮件 Email,点击 保存
- 打开生成的集成卡片,复制 邮件地址,再按下文配置 Zeek
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 邮件 Email,填写集成名称,复制 邮箱地址
- 按下文配置 Zeek
- 配置默认路由并选择协作空间,点击 保存
在 Flashduty 中配置推送模式
Zeek 的通知邮件只有触发,没有恢复邮件,所以不需要按规则关闭告警,推送模式 选择 总是触发新告警(新建集成时页面可能预选了其他模式,请确认):每封邮件新建一条告警。
- 告警标题是邮件标题,例如
[Zeek] SSH::Password_Guessing(方括号前缀加通知类型) - 告警描述是邮件正文,包含通知消息、连接的源和目的地址与端口等
- 严重程度统一为 Warning,可以通过 告警处理 Pipeline 按通知类型调整
suppress_for(默认 1 小时)内压制同一通知的重复发送,一般不需要再在 Flashduty 合并。如果希望同一通知类型合并为一条告警,可以把推送模式改为 根据邮件标题触发或更新告警,代价是标题只含通知类型,不同主机的同类通知会合并到一起。
在 Zeek 中配置
配置收件人和发信程序(ZeekControl)
在 ZeekControl 的配置文件zeekctl.cfg 中设置下列选项,然后执行 zeekctl deploy:
如果不使用 ZeekControl,在 Zeek 脚本中设置
Notice::mail_dest、Notice::mail_from、Notice::sendmail 即可,含义相同。
选择哪些通知发邮件
Zeek 只会对应用了Notice::ACTION_EMAIL 动作的通知发邮件。在 local.zeek 中用 Notice::emailed_types 按通知类型选择:
Notice::policy 钩子里按条件添加动作,并直接指定收件人:
zeekctl deploy)使其生效。
邮件格式
单条通知邮件(
Notice::ACTION_EMAIL)的标题是 Notice::mail_subject_prefix(默认 [Zeek])加空格加通知类型,正文由下列部分组成:
Message是通知消息,Sub-message是补充信息,仅在通知带有时出现- 通知关联到连接时有
Connection和Connection uid;只关联到地址时是Address - 通知带有文件信息时还有
File Description、File MIME Type - 脚本通过
email_body_sections扩展的内容会附在正文末尾
限制
- 只有触发,没有恢复:Zeek 不会发送恢复邮件。请在接收该集成的协作空间开启 超时自动关闭,建议 24 小时,否则告警需要手动关闭。
- 汇总邮件:
Notice::ACTION_ALARM不发单条邮件,而是把notice_alarm日志按周期(ZeekControl 的MailAlarmsInterval,默认 86400 秒)打包成一封汇总邮件,标题形如[Zeek] Log Contents: ...,一封包含多条通知,只会生成一条告警。需要逐条告警时请使用Notice::ACTION_EMAIL。 - 标题不含细节:邮件标题只有通知类型,主机、地址等细节在正文里,在 Flashduty 中查看告警描述。
- 严重程度:Zeek 通知没有严重程度字段,告警严重程度统一为 Warning。