跳至主内容

告警

告警是可设置的通知,用于向您通报 事件 。可通过 创建通知 选项在 通知 页面的 告警 栏目下创建,或在 新事件定义 工作流中定义。

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

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

注意

告警功能支持通过插件扩展。您可以在 安全数据湖 应用市场 中找到更多选项,或自行创建插件。 安全数据湖 应用市场

事件与告警页面

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

搜索面板

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

过滤器

过滤器可精确筛选事件或告警。点击 + 图标下拉按钮(位于 过滤器 旁)可查看可用过滤器类型列表:

筛选选项

用途

类型

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

优先级

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

时间戳

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

事件定义

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

聚合时间范围

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

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(可能是 事件消息 )(可为空)

时间戳

日期时间

时间戳可设置为底层事件或消息(参见上文 来源上下文

处理时间戳

日期时间

事件创建时的时间戳 安全数据湖

时间范围起始

日期时间

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

时间范围结束

日期时间

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

字符串

事件存储所在的流ID列表

源流

字符串

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

警报

布尔值

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

消息

字符串

描述该事件的友好提示信息

来源

字符串

事件来源的主机名 安全数据湖 生成此事件的服务器的

键元组

字符串

构成事件键值的列表

字符串

事件键值(以单一字符串形式表示)

优先级

长整型

事件的优先级数值

字段

映射

事件关联的自定义字段

积压元数据

字段

类型

描述

积压

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

ID

字符串

消息ID

索引

字符串

消息存储的索引名称;需与 ID 配合以唯一标识 安全数据湖

字符串

来源 字段表示消息的

消息

字符串

消息 字段表示消息的

时间戳

日期时间

时间戳 字段表示消息的

流标识符

字符串

流ID 表示消息的

字段

映射

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

删除排队警报

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

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

手动清除警报队列

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

  1. 导航至 事件定义 菜单(通过选择) 告警 > 事件定义 .

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

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

禁用事件

您也可通过禁用事件来清空告警队列。

  1. 如前例所示,导航至 事件定义 标签页。

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

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

  4. 禁用成功后,系统将显示告警确认所选事件定义已停用。

告警类型

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

安全数据湖 支持通过以下方式进行告警:

PagerDuty告警

注意

要使用PagerDuty告警,您需要一个集成路由密钥。若尚未拥有,需在 PagerDuty .

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

  • 路由密钥

    您的PagerDuty集成路由密钥。

  • 使用自定义事件键

    若启用,将使用提供的事件键前缀生成事件键。这将防止PagerDuty为单一事件创建多个事件。若不选择,则事件键 不会 生成,每条事件通知都将在PagerDuty中创建新事件。

  • 事件键前缀

    若启用自定义事件键,此字段将用作事件键的前缀。

  • 客户端名称

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

  • 客户端URL

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

注意

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

Slack告警

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

  • 配置颜色

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

  • Webhook URL

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

  • 频道

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

  • 自定义消息

    将发送至Slack的消息模板,可使用上述描述的数据字段。

    注意

    若需向个人发送Slack告警,请将其Slack ID或用户名添加至

    自定义消息 模板开头。Slack ID可在用户个人资料中查看,也可添加

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

  • 日期/时间值的时区

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

  • 消息积压限制(可选)

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

  • 用户名(可选)

    Slack中发送者的用户名。

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

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

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

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

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

  • 图标URL (可选)

    用作消息图标的图片。

  • 图标表情符号 (可选)

    用作消息图标的表情符号(将覆盖任何图标URL)。

注意

Slack警报旨在替代此前通过 安全数据湖 实验室 提供的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. 为通知设置唯一的标题和描述。

  3. 通知类型 下拉菜单中选择 Microsoft Teams通知V2

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

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

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

  7. 选择积压限制(可选)。

  8. 点击 执行测试通知 以验证您的通知是否正常工作。

  9. 点击 创建通知 .

脚本告警(仅限企业版)

脚本告警选项允许您配置一个在触发告警时执行的脚本。

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

  • 脚本路径

    脚本所在路径。必须位于允许的脚本路径内(可自定义)。

  • 脚本超时

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

  • 脚本参数

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

  • 通过STDIN发送告警数据

    通过标准输入发送上述JSON编码的数据。您可以在脚本中使用JSON解析器。

脚本告警的成功与否由其退出值决定;成功等于零。任何非零退出值都会导致失败。通过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")

    # 如果需要,可以写入标准错误
    # print_stderr("通过标准错误返回测试")

    # 返回退出值。零表示成功,非零表示失败。
    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请求头发送。若不选择,则API密钥和密钥将作为查询参数附加在请求URL中,安全性较低且可能不被某些应用接受。

自定义HTTP告警

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

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

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

  • 请求头(可选)

    输入需要随告警添加的额外HTTP请求头。

    注意

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

  • HTTP方法

    选择告警的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