跳至主内容

告警

告警是可配置的通知机制,用于向您通报特定 事件 。可通过 创建通知 功能在 通知 页面下的 警报 或可在 新事件定义 工作流中定义。

已分配的警报会显示在 通知 页面。该页面还支持批量操作,允许您编辑多个实体。您可以通过点击 测试通知 按钮(位于 更多操作 下方)来确认警报是否处于激活状态。随后您将在实体标题下方看到成功或错误消息。

本节将说明如何创建警报及配置 支持的警报类型 .

注意

警报支持通过插件扩展功能。您可在 安全数据湖 应用市场 找到更多选项,甚至可创建自定义插件。 安全数据湖 应用市场

事件与警报页面

通用视图中的 警报与事件 页面筛选功能可让您通过针对性筛选快速定位特定类型警报。这有助于缩小有效警报范围,便于在监控或调查时聚焦相关数据。

搜索面板

页面顶部设有搜索栏,支持通过关键词搜索事件。要进一步细化搜索结果,可使用筛选器查找特定事件或警报。

筛选器

筛选器可精确缩小事件或警报范围。选择 + 图标下拉按钮位于 筛选器 旁,点击可查看可用筛选类型列表:

筛选选项

用途

类型

按事件类别筛选,可选择事件或告警。

优先级

仅显示选定严重级别(如低、中、高)的事件。

时间戳

设定时间窗口以筛选指定日期/时间范围内的事件,适用于事件回溯。

事件定义

仅查看基于预定义系统规则或用户自定义规则的事件或告警。

聚合时间范围

用于评估事件定义的时间窗口。

ID

若已知特定事件ID,可按此搜索。

应用筛选条件后,其会以标签形式显示在 筛选器 下拉菜单旁。可多选筛选条件进行精准定位。

注意

布尔属性仅能使用一个筛选条件。例如,只能筛选事件或告警中的一种,不可同时筛选两者。

指标图表组件

该组件按时间轴绘制事件计数,帮助快速识别事件发生的峰值或趋势。

  • 蓝线(事件) :事件标记为蓝色,代表已检测到的事件。

  • 橙线(告警) :告警标记为橙色,突出显示已触发的告警。

  • 交互式坐标轴 悬停图表数据点可查看特定时间的事件计数摘要。X轴代表时间线,Y轴代表计数。

  • 导出:点击下载图标可导出图表用于报告生成。

  • 自动刷新 点击 不更新 下拉菜单选择时间间隔(如5秒、10秒、1分钟或5分钟)以启用实时监控。

该组件能有效识别恶意行为激增或评估警报量随时间的变化趋势。

若显示“未找到事件”消息,表示选定筛选条件或时间范围内未触发任何事件定义规则。您可能需要:

  • 扩展时间戳范围。

  • 移除筛选条件。

  • 确认后端事件生成功能正常运作。

在指标图表下方,所有事件和警报以表格形式分列呈现,包含事件/警报描述、优先级、键值、类型、事件定义、事件定义类型、时间戳和操作等列。点击 下拉按钮可选择显示或隐藏其他列类别。

在显示的警报和事件列表中,可点击事件或警报展开查看详情,或点击 详情 按钮(位于 操作 列)。通过点击 更多 下拉菜单按钮(位于 操作 列)并选择 发送通知

警报页面示例

可通过筛选排查输入故障。例如“INPUT_FAILING: 输入启动失败”这类关键系统警告会显示在警报和事件页面。通过筛选 类型=事件 , 事件定义=系统通知事件 优先级 = 低/高 快速隔离此类事件以便响应或升级。

警报 菜单创建警报

  1. 导航至 警报 菜单并选择 通知 .

  2. 选择 创建通知 按钮。

  3. 填写以下字段:

    1. 标题 :为您的警报创建唯一标题。

    2. 描述 (可选):如需可在此字段添加警报的额外详细信息。

    3. 通知类型 :从下拉菜单中选择警报类型。

  4. 选择警报类型后,系统会根据所选类型显示额外字段。各警报类型及其需配置的关键字段详见 警报类型 .

  5. 您也可通过选择 执行测试通知 .

  6. 点击 创建通知 .

在新事件定义工作流中创建警报

您也可以选择在 定义新事件 .

  1. 新事件定义 菜单中,菜单栏会有一个 通知 选项。

  2. 添加通知 下,从下拉菜单中选择 创建新通知

  3. 在弹出的菜单中填写以下字段:

    1. 标题 :为您的警报创建一个独特的标题。

    2. 描述 (可选):如果需要,您可以在此字段中添加关于警报的更多详细信息。

    3. 通知类型 :从下拉菜单中选择警报类型。

  4. 选择警报类型后,系统会根据所选类型显示其他字段。每种警报类型及其需要配置的关键字段详见 警报类型 .

  5. 您也可以选择此时通过点击 执行测试通知 .

  6. 点击 创建通知 .

警报可用的元数据

创建告警时,您可利用来自事件定义、事件本身及事件积压消息(若配置了保留积压)的元数据。这些元数据可用于格式化电子邮件、Slack和Microsoft Teams告警,或为脚本告警提供参数。

例如,若希望在Slack告警中包含更多信息,您可向 自定义消息 部分添加新字段。也可通过删除该部分中的字段来移除不希望显示的字段。

或为脚本告警添加参数以在告警中包含更多信息。

各实体类型可用的字段如下所述。

事件定义元数据

字段

类型

描述

event_definition_id

字符串

事件定义的数据库ID

event_definition_type

字符串

事件定义类型的内部名称( aggregation-v1correlation-v1 )

event_definition_title

字符串

界面中设置的标题

event_definition_description

字符串

界面中设置的描述

job_definition_id

字符串

与定时事件定义关联的内部任务定义ID

job_trigger_id

字符串

与当前作业执行相关联的内部ID

事件元数据

字段

类型

描述

事件

事件在 安全数据湖中的存储形式

ID

字符串

存储事件的消息ID

事件定义ID

字符串

事件定义的数据库ID

事件定义类型

字符串

事件定义类型的内部名称( 聚合-v1关联-v1 )

来源上下文

字符串

创建此事件的消息或事件的URN(可能是 事件消息 )(可为空)

时间戳

日期时间

时间戳可设置为底层事件或消息(参见 origin_context 上文)

timestamp_processing

日期时间

事件由 安全数据湖

timerange_start

日期时间

用于创建此事件的数据窗口起始时间 安全数据湖 (可为空)

timerange_end

日期时间

用于创建此事件的数据窗口结束时间 安全数据湖 (可为空)

streams

字符串

事件所存储的流ID列表

source_streams

字符串

事件所提取数据的源流ID列表

alert

布尔值

该事件是否被视为警报;对于具有警报的事件定义 始终为真

message

字符串

描述此事件的人类可读消息

来源

字符串

创建此事件的 安全数据湖 服务器的主机名

键元组

字符串

构成事件键的数值列表

字符串

事件键的单字符串形式

优先级

长整型

事件的优先级数值

字段

映射

附加到事件的自定义字段

积压元数据

字段

类型

描述

积压

触发警报生成的消息或事件列表

ID

字符串

消息ID

索引

字符串

消息存储的索引名称;需与 id 结合使用以在 安全数据湖

source

字符串

消息的 source 字段

message

字符串

消息的 message 字段

timestamp

日期时间

消息的 timestamp 字段

stream_ids

字符串

消息的 流ID 集合

fields

映射

消息的其余字段(可迭代)

删除排队警报

若处理停止且事件更新开始在队列中堆积,则可能无意中触发了过多警报。为避免警报激增,请确保为事件定义设置警报宽限期。宽限期会对相同事件触发的警报数量实施速率限制,从而有效防止排队的事件警报。若未设置宽限期,过多事件触发可能导致警报积压。

若遇到排队的事件警报,可通过两种方式清除警报队列。

手动清除警报队列

通过界面手动清除警报队列:

  1. 导航至 事件定义 菜单,选择 警报 > 事件定义 .

  2. 在可用定义列表中,点击 信息图标 (位于 调度 .

  3. 事件定义菜单将展开。此处可查看排队警报数量。若排队警报过多,通常表明存在异常。在 排队警报 行中,点击 清除 即可清除所选事件定义的排队警报。

禁用事件

您也可以通过禁用事件来清除警报队列。

  1. 如前例所示,导航至 事件定义 选项卡。

  2. 在您的事件定义旁,点击 更多 下拉按钮,并从菜单选项中选择 禁用 以禁用目标事件。

  3. 选择 禁用 选项后,将弹出对话框提示您确认选择。

  4. 禁用成功后,将显示提示信息确认所选事件定义已被停用。

告警类型

告警 所述,告警是可配置用于通知事件的消息。在 创建事件定义 过程中,您可以为事件附加告警,并选择告警发送方式(电子邮件、Slack或Discord告警等)。

安全数据湖 支持以下告警方式:

PagerDuty告警

注意

使用PagerDuty告警需具备集成路由密钥。若尚未获取,需在 PagerDuty .

PagerDuty告警功能允许针对 安全数据湖 服务器中的事件创建新工单。以下是 新建通知 菜单中可配置的PagerDuty选项:

  • 路由密钥

    您的PagerDuty集成路由密钥。

  • 使用自定义工单密钥

    启用后,系统将根据提供的工单密钥前缀生成密钥,可避免PagerDuty为单一事件创建多个工单。若不选择,则 不会 生成密钥,每个事件通知都将在PagerDuty创建新工单。

  • 工单密钥前缀

    启用自定义工单密钥时,此字段将作为工单密钥的前缀。

  • 客户端名称

    触发PagerDuty事件的 安全数据湖 系统名称。

  • 客户端URL

    您的 安全数据湖 网络界面URL。若提供,该URL将用于构建嵌入PagerDuty事件中的链接。

注意

PagerDuty警报旨在替代之前通过 安全数据湖 实验室 提供的PagerDuty集成功能。若您正在使用 安全数据湖 实验室的PagerDuty集成,应迁移至官方支持的PagerDuty警报。

Slack警报

Slack允许您将警报发送至工作区,以响应 安全数据湖 服务器中的事件。以下是在 新建通知 菜单中为Slack定义的支持配置选项:

  • 配置颜色

    用您偏好的颜色高亮显示自定义消息。

  • Webhook URL

    用于向Slack实例发送消息的 唯一URL。

  • 频道

    目标 频道 (可输入@用户或@团队以接收警报)。

  • 自定义消息

    将发送至Slack的消息。上述描述的数据可用于此模板。

    注意

    若要将Slack警报发送给个人接收者,请将其Slack ID或用户名添加到

    自定义消息 模板的开头。Slack ID可在Slack用户个人资料下找到。您也可以添加

    接收者的邮箱用户名,即电子邮件地址中@符号前的部分。

  • 日期/时间值的时区

    选择警报中时间戳使用的首选时区。默认选择为UTC。

  • 消息积压限制(可选)

    限制作为Slack警报一部分发送的积压消息数量。若设置为0,则不设限制。

  • 用户名(可选)

    Slack中发送者的用户名。

  • 选项(您可选择启用以下配置):

    • 包含标题 :若启用,警报中将包含完整的事件定义标题和描述。

    • 通知频道 :若启用,将通过@channel通知频道内所有用户。

    • 通知在线成员 :若启用,仅通过@here通知频道内活跃用户。

    • 链接名称 :若启用,将在警报中查找并链接频道名称和用户名。

  • 图标URL (可选)

    用作此消息图标的图像。

  • 图标表情符号 (可选)

    用作此消息图标的emoji(将覆盖任何图标URL)。

注意

Slack警报旨在替代先前通过 安全数据湖 实验室 。如果您正在使用 安全数据湖 实验室Slack插件,应尽快迁移至官方支持的Slack告警功能

Microsoft Teams告警

Microsoft Teams通知功能允许在您的 安全数据湖 配置中发生特定事件时,向Teams频道发送消息。这是通过在Microsoft Teams中创建的工作流实现的。Microsoft Teams通知V2支持向 当收到webhook请求时发布到频道 工作流发送自适应卡片。

注意

创建工作流时务必复制webhook URL!这是配置 Webhook URL 字段所必需的。另请注意,Microsoft Teams要求为所有单独频道生成webhook。

在Microsoft Teams中创建工作流

请按以下步骤在Microsoft Teams中创建工作流:

  1. 导航至 应用 > 工作流 > 管理工作流 > 创建。

  2. 当收到webhook请求时发布到频道 下搜索 通知 。选择工作流中使用次数最多的模板。

  3. 为工作流设置唯一标题并点击 添加工作流 .

  4. 保存弹出窗口中显示的webhook URL。这是配置 安全数据湖 稍后配置通知。

如需编辑自适应卡片:

  1. 点击 管理工作流 在下一个弹出窗口中。

  2. 点击 编辑 在后续页面上。

  3. 展开 发送每张自适应卡片 操作。

  4. body.attachments 替换为 attachments (可在动态内容选项中找到)。

  5. 点击 在聊天或频道中发布卡片 .

  6. 选择 以用户身份发布。

  7. 为以下选项做出选择: 发布至 , 团队 频道 .

  8. 保存工作流。

    注意

    您可以展开 当收到Teams webhook请求时 触发器以复制webhook URL(若之前未操作)。

获取webhook URL后,请前往 安全数据湖 创建 Microsoft Teams通知V2 .

安全数据湖

  1. 中创建Microsoft Teams通知 转到 > > 通知 并点击 .

  2. 为通知指定唯一标题和描述。 通知类型 下拉菜单中选择 Microsoft Teams通知V2

  3. 将之前保存的URL填入 Webhook URL 输入框。

  4. 默认的 自适应卡片模板 与原自适应卡片类似。可使用微软 自适应卡片设计器 如需自定义,请使用

  5. 日期/时间值的时区 下选择相关时区(默认为UTC)。

  6. 可选设置积压限制。

  7. 点击 执行测试通知 以验证通知是否生效。

  8. 点击 创建通知 .

脚本告警(仅限企业版)

脚本告警功能允许配置触发告警时执行的脚本。

以下是在 新建通知 菜单中为脚本告警定义的配置选项:

  • 脚本路径

    脚本所在路径(必须在允许的脚本路径范围内,该路径可自定义)。

  • 脚本超时

    脚本被强制终止前允许执行的最长时间(毫秒)。

  • 脚本参数

    以空格分隔的参数字符串,可使用上文描述的任何数据。

  • 通过STDIN发送告警数据

    将JSON编码的上述数据通过标准输入传递,脚本中可使用JSON解析器。

脚本告警成功与否取决于退出值:0表示成功,非零值将导致失败。通过STDERR返回任何错误文本也会使告警回调失败。

以下Python示例脚本展示了所有支持的脚本告警功能(参数解析、STDIN JSON解析、STDOUT、退出值及返回退出值):

#!/usr/bin/env python3
import json
import sys

# 向标准错误输出文本的函数
def print_stderr(*args, **kwargs):
    print(*args, file=sys.stderr, **kwargs)

# 主函数
if __name__ == "__main__":

    # 打印所有输入参数
    sys.stdout.write("所有传入参数: " + ' '.join(sys.argv[1:]) + "\n")

    # 将stdin.readlines()数组转为字符串
    std_in_string = ''.join(sys.stdin.readlines())

    # 加载JSON
    event_data = json.loads(std_in_string)

    # 从JSON提取部分值
    sys.stdout.write("从JSON提取的值: \n")
    sys.stdout.write("事件定义ID: " + event_data["event_definition_id"] + "\n")
    sys.stdout.write("事件定义标题: " + event_data["event_definition_title"] + "\n")
    sys.stdout.write("事件时间戳: " + event_data["event"]["timestamp"] + "\n")

    # 从JSON提取消息积压字段
    sys.stdout.write("\n积压消息:\n")
    for message in event_data["backlog"]:
        for field in message.keys():
            sys.stdout.write("字段: " + field + "\t")
            sys.stdout.write("值: " + str(message[field]) + "\n")

    # 如需可向stderr写入
    # print_stderr("通过标准错误返回测试")

    # 返回退出值(0为成功,非零表示失败)
    exit(0)

邮件告警

邮件告警可在条件触发时向配置的接收者发送邮件。请确保检查 安全数据湖 配置文件。

该警报提供多种配置选项以自定义发送的电子邮件内容。请注意,邮件正文和邮件主题均采用 JMTE 模板。JMTE是一个支持变量、循环和条件语句的极简模板引擎。具体语言规范请参阅 JMTE文档

默认正文模板展示了在模板中访问可用信息的高级示例:

--- [事件定义] ---------------------------
标题:       ${event_definition_title}描述: ${event_definition_description}
类型:        ${event_definition_type}
--- [事件] --------------------------------------
时间戳:            ${event.timestamp}
消息:              ${event.message}
来源:               ${event.source}
键值:                  ${event.key}
优先级:             ${event.priority}
警报:                ${event.alert}
处理时间戳: ${event.timestamp}
时间范围起始:      ${event.timerange_start}
时间范围结束:        ${event.timerange_end}
字段:
${foreach event.fields field}${field.key}: ${field.value}
${end}
${if backlog}
--- [积压消息] ------------------------------------
触发该警报的最近消息:
${foreach backlog message}
${message}
${end}
${end}

以下是在 新建通知 菜单中为电子邮件警报提供的配置选项:

  • 主题

    用于电子邮件警报的主题。如上所述,邮件主题采用 JMTE 模板。

  • 以单封邮件形式向所有收件人发送通知

    勾选此选项可向所有收件人发送统一消息。该选项允许用户回复并持续沟通警报信息。若不勾选,每位收件人将收到独立警报消息。

  • 回复地址(可选)

    收件人需要回复时使用的电子邮件地址。

  • 发件人(可选)

    用作发送地址的电子邮件地址。若留空则使用默认地址。

  • 用户收件人(可选)

    选择 安全数据湖 用户添加到警报的 收件人 栏。

  • 电子邮件收件人(可选)

    添加其他电子邮件地址至 收件人 警报的收件人行。

  • 抄送用户(可选)

    选择 安全数据湖 用户添加到 抄送 警报的行。

  • 抄送邮箱(可选)

    添加其他邮箱地址到 抄送 警报的行。

  • 密送用户(可选)

    选择 安全数据湖 用户添加到 密送 警报的行。

  • 密送邮箱(可选)

    添加其他邮箱地址到 密送 警报的行。

  • 日期/时间值的时区(可选)

    您可以选择为邮件正文使用特定时区。

  • 正文模板

    这是用于生成邮件正文的模板。如上所述,邮件正文是一个 JMTE 模板。

  • HTML正文模板

    这是用于生成邮件HTML正文的模板。

动态邮件通知地址

安全数据湖 允许将电子邮件通知发送给多个收件人。单个事件定义与通知配对形成警报,可通过查找表将警报发送至多个电子邮件地址。

可通过勾选相应复选框,将 回复邮件地址 , 发件人邮箱 邮件收件人 修改为使用查找表。随后您可选择:

  • 要使用的查找表。

  • 用于查找的事件字段。

例如,勾选 为邮件收件人使用查找表 复选框后,可将邮件通知设置为向查找表中关联客户ID与邮箱地址的客户发送警报。这样无需为多个客户单独设置警报,查找表将自动完成映射。

HTTP警报

HTTP警报允许配置警报触发时调用的端点。

安全数据湖 会向警报URL发送POST请求,其中包含警报相关信息。请求正文为上述JSON编码数据。

以下是警报中包含的负载示例:

{
  "event_definition_id": "this-is-a-test-notification",
  "event_definition_type": "test-dummy-v1",
  "event_definition_title": "事件定义测试标题",
  "event_definition_description": "事件定义测试描述",
  "job_definition_id": "<未知>",
  "job_trigger_id": "<未知>",
  "event": {
    "id": "NotificationTestId",
    "event_definition_type": "notification-test-v1",
    "event_definition_id": "EventDefinitionTestId",
    "origin_context": "urn:graylog:message:es:testIndex_42:b5e53442-12bb-4374-90ed-0deadbeefbaz",
    "timestamp": "2020-05-20T11:35:11.117Z",
    "timestamp_processing": "2020-05-20T11:35:11.117Z",
    "timerange_start": null,
    "timerange_end": null,
    "streams": [
      "000000000000000000000002"
    ],
    "source_streams": [],
    "message": "用户<admin>触发的通知测试消息",
    "source": "000000000000000000000001",
    "key_tuple": [
      "testkey"
    ],
    "key": "testkey",
    "priority": 2,
    "alert": true,
    "fields": {
      "field1": "value1",
      "field2": "value2"
    }
  },
  "backlog": []
}

以下为HTTP警报在 新建通知 菜单中支持配置的选项:

  • URL

    事件发生时POST请求的目标URL。

  • 跳过TLS验证(可选)

    选择此选项可跳过对URL的TLS证书验证。

  • 基本认证(可选)

    基本认证字符串需遵循此格式:<用户名>:<密码>。

  • API密钥(可选)

    如需使用API密钥,请在此输入(可选)。注意:若设置了API密钥,则必须同时设置API密钥。

  • API密钥(可选)

    如需使用密钥,请在此输入(可选)。注意:若设置了API密钥,则必须同时设置API密钥。

  • 将API密钥/密钥作为请求头发送(可选)

    勾选此选项可将API密钥和密钥作为HTTP请求头发送。若不勾选,则通过URL查询参数传递,安全性较低且可能被部分应用程序拒绝。

自定义HTTP告警

自定义HTTP告警不仅包含标准HTTP告警的所有功能( 见上文 ),还提供更多配置信息发送格式的选项。例如:可为POST和PUT方法选择不同内容类型,并可添加额外请求头。

您还可以使用 JMTE 模板自定义HTTP请求体。JMTE是支持变量、循环和条件语句的极简模板引擎,语法参考详见 JMTE文档

HTTP告警的上述选项外 ,还需在 新建通知 菜单中配置以下选项以定义自定义HTTP告警:

  • 请求头(可选)

    输入需要随告警附加的HTTP请求头。

    注意

    若该通知需调用 安全数据湖 REST API,除提供正确授权外,必须添加名为 X-Requested-By 的请求头。缺少此请求头时, 安全数据湖 API将拒绝调用。

  • HTTP方法

    选择告警的方法类型。默认值为POST。GET请求返回的任何响应均被忽略。

  • 内容类型

    选择告警正文的内容类型。默认值为application/JSON。此选项仅适用于POST和PUT方法。

  • 日期/时间值的时区

    为告警正文中包含的任何日期或时间选择时区。默认值为UTC。此选项仅适用于POST和PUT方法。

  • 正文模板

    此字段用于生成告警正文的模板。每种内容类型都有其默认模板。使用默认模板或参考JMTE文档以了解如何根据需求自定义模板。

    如果将此字段留空,则会发送整个告警对象。对于application/JSON和text/plain内容类型,正文与上述标准HTTP告警相同。对于application/x-www-form-urlencoded,空正文将生成如下格式的有效载荷:

    event_definition_id=NotificationTestId&event_definition_type=test-dummy-v1&event_definition_title=Event%20Definition%20Test%20Title&event_definition_description=Event%20Definition%20Test%20Description&job_definition_id=%3Cunknown%3E&job_trigger_id=%3Cunknown%3E&event_id=TEST_NOTIFICATION_ID&event_origin_context=urn%3Agraylog%3Amessage%3Aes%3AtestIndex_42%3Ab5e53442-12bb-4374-90ed-0deadbeefbaz&event_timestamp=2023-11-17T11%3A49%3A40.905-06%3A00&event_timestamp_processing=2023-11-17T11%3A49%3A40.905-06%3A00&event_timerange_start=&event_timerange_end=&event_streams=%5B000000000000000000000002%5D&event_source_streams=%5B%5D&event_message=Notification%20test%20message%20triggered%20from%20user%20%3Clocal%3Aadmin%3E&event_source=000000000000000000000001&event_key_tuple=%5Btestkey%5D&event_key=testkey&event_priority=2&event_fields=%7Bfield1%3Dvalue1%2C%20field2%3Dvalue2%7D&backlog=%5B%5D