跳至主内容

数据流

数据流通过 流规则 管道规则 根据消息来源、严重性或内容等属性筛选消息。

这使您能够以结构化方式组织、处理和存储日志数据,实现定向分析和告警。

核心概念

默认数据流

安全数据湖 内置名为'所有消息'的流,自动接收不符合其他流规则的日志数据。

该默认流不可删除或暂停,用于接收所有传入消息。

当您创建带有特定规则的自定义流时,只有符合这些规则的消息才会被路由到相应流中;其余所有消息仍保留在默认流中。

流规则

注意

流规则被视为遗留功能,将在未来的 安全数据湖 版本中弃用。 我们建议改用管道,因为管道能为消息过滤、丰富和路由提供更大灵活性。

流规则 用于定义将消息路由到流中的条件。每个流可包含多个实时评估字段、值或关键词的规则。

规则可通过AND或OR等逻辑运算符组合。例如,流规则可过滤来自特定IP地址的消息,或根据 错误 ”或 警告 .

管道与流

管道 可附加到流上执行进一步处理。

管道由包含 管道规则 的连续阶段组成,这些规则对符合特定条件的消息进行操作。 管道规则可丰富、转换或重路由消息——例如通过提取字段、重命名键名或标准化值。

了解如何将管道附加到流,请参阅 数据路由 .

流与保存搜索的对比

流与 保存搜索 的核心区别在于时效性:

  • 流实时处理消息,支持即时告警和转发。

  • 保存搜索是对存储数据的静态查询。

由于流在处理时会标记每条消息,后续按流ID过滤比每次搜索时重建复杂查询要快得多。

管理流

您可以通过顶部菜单中的“流”页面管理现有数据流。

每个列出的数据流包含以下关键信息:

  • 归档 – 是否 已启用 关联 索引集 的归档功能。

  • 数据湖 – 显示是否为此数据流配置了数据湖目标。

  • 规则 – 附加的流规则数量。

  • 管道 – 应用的管道数量。

  • 吞吐量 – 消息处理速率。

  • 状态 – 显示数据流处于运行(活动)或暂停(非活动)状态。

  • 数据路由 – 打开流规则、管道和目标的配置向导。更多信息请参阅 此知识库文章 .

  • 共享 – 将此数据流配置分享给其他 用户或团队 . 权限管理

  • 更多操作 – 访问其他选项,如管理流规则、克隆数据流或设置 告警 .

创建新数据流

要创建新数据流以路由日志数据,请按以下步骤操作:

  1. 前往页面顶部的 数据流 选项卡。

  2. 选择 创建数据流 .

  3. 输入唯一标题和描述,例如 所有错误消息按来源分类的网络日志 .

  4. 选择该数据流消息将写入的索引集。

    注意

    后续可通过 数据路由 修改此目标,例如将消息路由至数据湖。

  5. (可选)启用 从'默认数据流'移除匹配项 以将这些消息排除在默认数据流外。

  6. 选择 创建数据流 .

  7. 数据流已保存但处于未激活状态。要开始处理数据,请选择'暂停'按钮激活,激活后将变为'运行中'状态。

创建和修改数据流规则

数据流规则决定哪些消息流入您的数据流。您可以通过 管理规则菜单 或通过 快速添加规则 .

通过管理规则创建规则

要在管理规则页面创建规则,请按以下步骤操作:

  1. 在流页面找到需要修改的流,选择更多,然后选择管理规则。

  2. 1. 加载消息以测试规则 下,选择最近的日志消息或通过消息ID加载一条。

  3. 2. 管理流规则 下,选择添加流规则并填写字段:

    • 字段 :要过滤的字段名称(例如:source_ip)。

    • 类型 :如何匹配值(例如:完全匹配、大于或包含)。

    • :要匹配的值(例如:特定IP地址)。

    • 反向 :使规则具有排除性(例如:排除特定IP)。

    • 描述 (可选):描述规则的简短说明。

  4. 选择 创建规则 .

  5. 根据需要重复添加更多条件。

  6. 指定消息必须匹配所有规则还是至少一个规则才能进入流。

  7. 选择 我完成了! 以完成设置。

若要稍后编辑或删除规则,请返回 管理规则 并使用 编辑 删除 选项。

使用快速添加规则创建规则

要快速添加规则,请按以下步骤操作:

  1. 数据流 页面,点击 更多 > 快速添加规则 针对目标数据流。

  2. 2. 管理数据流规则 中,选择添加数据流规则并填写以下字段:

    • 字段 :要筛选的字段名称(例如:source_ip)。

    • 类型 :匹配值的方式(例如:完全匹配、大于或包含)。

    • :要匹配的值(例如:特定IP地址)。

    • 反向 :使规则具有排除性(例如:排除特定IP)。

    • 描述 (可选):描述规则的简短说明。

  3. 在此处可添加新的数据流规则以筛选流向该数据流的日志数据。按照上一章节第5步的指引创建新规则。

  4. 点击 创建规则 进行保存。

若要修改或删除通过快速添加创建的规则,请使用 更多 > 管理规则 在同一数据流中操作。

从数据流路由日志

数据流是日志数据在 安全数据湖 .

数据路由始于数据流层级,您可在此应用规则、附加管道并定义目标。 有关配置数据路由的详细说明,请参阅 数据路由 .

数据流处理机制

安全数据湖 中的每条传入消息 都会与所有已配置数据流的规则进行匹配。若消息满足某数据流的全部或任一规则(取决于数据流配置方式),该数据流的内部ID将被添加至消息的 streams 数组中。

此分类机制使得所有引用特定数据流的搜索、告警及处理操作,都能自动将其范围限定于属于该数据流的消息。该过滤过程自动完成,您无需在搜索中手动指定 streams:[STREAM_ID] 参数。

数据流处理运行时限制

在消息处理过程中,数据流分类对系统整体性能至关重要。 每条消息都会根据用户定义的数据流规则进行评估,若内容匹配条件则被添加至对应数据流。

由于该分类发生在消息索引阶段,规则匹配所需时间将直接影响系统吞吐量与响应速度。

若某些数据流规则评估耗时过长(例如因复杂正则表达式),可能导致处理速度下降甚至停滞。严重情况下,消息可能在内存中堆积,进而引发系统不稳定或数据丢失。

为防止此类情况, 安全数据湖 对数据流规则匹配实施运行时限制:

  • 若消息与流规则的匹配时长超过配置的超时阈值,则该流针对该消息的规则评估将被终止。

  • 消息处理流程仍正常继续,但该事件会被记录为故障。

  • 若某流触发的故障次数超过允许上限, 安全数据湖 将自动禁用该流以保障系统稳定性。

此机制优先保障整体消息流和系统性能,而非针对少量消息的流分类精确性。

但在高负载环境中,若处理时间持续超出配置限制,可能导致流被频繁禁用。这通常表明系统资源过载,无法处理当前消息量。

超时值配置

若默认超时设置不适用于您的环境,可在Graylog服务器配置文件中调整以下参数:

参数

描述

默认值

stream_processing_timeout

定义流规则评估的最长允许时间(毫秒)。超时则终止规则匹配并记录故障。

2000 (2秒)

stream_processing_max_faults

设置单流允许的最大超时次数。超过该阈值后流将自动禁用,需手动重新启用。

3

运行时间过长的成因

若仅单个流被禁用而其他流运行正常,很可能该流中存在低效规则。

多数情况下,这由正则表达式引起——其计算复杂度取决于表达式复杂度和待匹配输入。

特别是复杂或未优化的正则模式可能引发灾难性回溯,导致特定输入下的评估时间呈指数级增长。

若流处理超时持续发生,请按以下步骤排查:

  1. 检查受影响流的规则,重点关注正则表达式规则。

  2. 简化或移除低效规则以缩短评估时间。

  3. 修改后重新启用流并确认处理性能改善。

流连接机制

流水线本身不直接处理消息。要使流水线对输入数据生效,必须将其连接至一个或多个流。该连接决定了哪些消息由该流水线处理,从而精确控制不同类型日志数据的加工与增强方式。

内置函数 route_to_stream 可在流水线规则中用于将消息路由至另一流。

消息一旦被路由,流水线处理器会自动识别并执行与该目标流连接的所有流水线。尽管流水线可通过消息路由触发其他流水线,但所有传入消息必须首先通过至少一个附有流水线的流。

默认流

所有被 安全数据湖 接收的消息最初都会路由至默认流。您可将此流作为流水线处理的入口点,使传入消息能路由至更多流并接受后续处理。

但若您希望使用原始流匹配功能(即流规则),可配置 流水线处理器 使其在 消息过滤链 之后运行(位于 消息处理器配置 区域,该区域在 系统 > 配置 页面),并将流水线连接至现有流。这使您能精细控制提取、转换和富化过程。

默认情况下,所有被 安全数据湖 接收的消息最初会路由至 默认流 ( 所有消息 )。您可将此流作为流水线处理的起点,例如将消息路由至附加流或应用特定转换规则。

若您倾向使用传统的 基于流规则的匹配 功能,可配置 流水线处理器 使其在 消息过滤链 之后运行 系统 配置 消息处理器配置 。该方法允许您将管道连接到现有流,并精细控制提取、转换和丰富过程。

消息处理器排序

消息处理器的顺序会显著影响消息处理方式。设计流和管道时,请确保处理器顺序符合预期逻辑,尤其是当后续处理器依赖链中早期修改或丰富的数据时。