数据流
数据流通过 流规则 与 管道规则 根据消息来源、严重性或内容等属性筛选消息。
这使您能够以结构化方式组织、处理和存储日志数据,实现定向分析和告警。
核心概念
默认数据流
安全数据湖 内置名为'所有消息'的流,自动接收不符合其他流规则的日志数据。
该默认流不可删除或暂停,用于接收所有传入消息。
当您创建带有特定规则的自定义流时,只有符合这些规则的消息才会被路由到相应流中;其余所有消息仍保留在默认流中。
流规则
注意
流规则被视为遗留功能,将在未来的 安全数据湖 版本中弃用。 我们建议改用管道,因为管道能为消息过滤、丰富和路由提供更大灵活性。
流规则 用于定义将消息路由到流中的条件。每个流可包含多个实时评估字段、值或关键词的规则。
规则可通过AND或OR等逻辑运算符组合。例如,流规则可过滤来自特定IP地址的消息,或根据
错误
”或
警告
.
管道与流
管道 可附加到流上执行进一步处理。
管道由包含 管道规则 的连续阶段组成,这些规则对符合特定条件的消息进行操作。 管道规则可丰富、转换或重路由消息——例如通过提取字段、重命名键名或标准化值。
了解如何将管道附加到流,请参阅 数据路由 .
流与保存搜索的对比
流与 保存搜索 的核心区别在于时效性:
-
流实时处理消息,支持即时告警和转发。
-
保存搜索是对存储数据的静态查询。
由于流在处理时会标记每条消息,后续按流ID过滤比每次搜索时重建复杂查询要快得多。
管理流
您可以通过顶部菜单中的“流”页面管理现有数据流。
每个列出的数据流包含以下关键信息:
创建新数据流
要创建新数据流以路由日志数据,请按以下步骤操作:
-
前往页面顶部的 数据流 选项卡。
-
选择 创建数据流 .
-
输入唯一标题和描述,例如
所有错误消息或按来源分类的网络日志. -
选择该数据流消息将写入的索引集。
注意
后续可通过 数据路由 修改此目标,例如将消息路由至数据湖。
-
(可选)启用 从'默认数据流'移除匹配项 以将这些消息排除在默认数据流外。
-
选择 创建数据流 .
-
数据流已保存但处于未激活状态。要开始处理数据,请选择'暂停'按钮激活,激活后将变为'运行中'状态。
创建和修改数据流规则
数据流规则决定哪些消息流入您的数据流。您可以通过 管理规则菜单 或通过 快速添加规则 .
通过管理规则创建规则
要在管理规则页面创建规则,请按以下步骤操作:
-
在流页面找到需要修改的流,选择更多,然后选择管理规则。
-
在 1. 加载消息以测试规则 下,选择最近的日志消息或通过消息ID加载一条。
-
在 2. 管理流规则 下,选择添加流规则并填写字段:
-
字段 :要过滤的字段名称(例如:source_ip)。
-
类型 :如何匹配值(例如:完全匹配、大于或包含)。
-
值 :要匹配的值(例如:特定IP地址)。
-
反向 :使规则具有排除性(例如:排除特定IP)。
-
描述 (可选):描述规则的简短说明。
-
-
选择 创建规则 .
-
根据需要重复添加更多条件。
-
指定消息必须匹配所有规则还是至少一个规则才能进入流。
-
选择 我完成了! 以完成设置。
若要稍后编辑或删除规则,请返回 管理规则 并使用 编辑 或 删除 选项。
使用快速添加规则创建规则
要快速添加规则,请按以下步骤操作:
-
在 数据流 页面,点击 更多 > 快速添加规则 针对目标数据流。
-
在 2. 管理数据流规则 中,选择添加数据流规则并填写以下字段:
-
字段 :要筛选的字段名称(例如:source_ip)。
-
类型 :匹配值的方式(例如:完全匹配、大于或包含)。
-
值 :要匹配的值(例如:特定IP地址)。
-
反向 :使规则具有排除性(例如:排除特定IP)。
-
描述 (可选):描述规则的简短说明。
-
-
在此处可添加新的数据流规则以筛选流向该数据流的日志数据。按照上一章节第5步的指引创建新规则。
-
点击 创建规则 进行保存。
若要修改或删除通过快速添加创建的规则,请使用 更多 > 管理规则 在同一数据流中操作。
从数据流路由日志
数据流是日志数据在 安全数据湖 .
数据路由始于数据流层级,您可在此应用规则、附加管道并定义目标。 有关配置数据路由的详细说明,请参阅 数据路由 .
数据流处理机制
安全数据湖
中的每条传入消息
都会与所有已配置数据流的规则进行匹配。若消息满足某数据流的全部或任一规则(取决于数据流配置方式),该数据流的内部ID将被添加至消息的
streams
数组中。
此分类机制使得所有引用特定数据流的搜索、告警及处理操作,都能自动将其范围限定于属于该数据流的消息。该过滤过程自动完成,您无需在搜索中手动指定
streams:[STREAM_ID]
参数。
数据流处理运行时限制
在消息处理过程中,数据流分类对系统整体性能至关重要。 每条消息都会根据用户定义的数据流规则进行评估,若内容匹配条件则被添加至对应数据流。
由于该分类发生在消息索引阶段,规则匹配所需时间将直接影响系统吞吐量与响应速度。
若某些数据流规则评估耗时过长(例如因复杂正则表达式),可能导致处理速度下降甚至停滞。严重情况下,消息可能在内存中堆积,进而引发系统不稳定或数据丢失。
为防止此类情况, 安全数据湖 对数据流规则匹配实施运行时限制:
-
若消息与流规则的匹配时长超过配置的超时阈值,则该流针对该消息的规则评估将被终止。
-
消息处理流程仍正常继续,但该事件会被记录为故障。
-
若某流触发的故障次数超过允许上限, 安全数据湖 将自动禁用该流以保障系统稳定性。
此机制优先保障整体消息流和系统性能,而非针对少量消息的流分类精确性。
但在高负载环境中,若处理时间持续超出配置限制,可能导致流被频繁禁用。这通常表明系统资源过载,无法处理当前消息量。
超时值配置
若默认超时设置不适用于您的环境,可在Graylog服务器配置文件中调整以下参数:
|
参数 |
描述 |
默认值 |
|---|---|---|
|
stream_processing_timeout |
定义流规则评估的最长允许时间(毫秒)。超时则终止规则匹配并记录故障。 |
|
|
stream_processing_max_faults |
设置单流允许的最大超时次数。超过该阈值后流将自动禁用,需手动重新启用。 |
3 |
运行时间过长的成因
若仅单个流被禁用而其他流运行正常,很可能该流中存在低效规则。
多数情况下,这由正则表达式引起——其计算复杂度取决于表达式复杂度和待匹配输入。
特别是复杂或未优化的正则模式可能引发灾难性回溯,导致特定输入下的评估时间呈指数级增长。
若流处理超时持续发生,请按以下步骤排查:
-
检查受影响流的规则,重点关注正则表达式规则。
-
简化或移除低效规则以缩短评估时间。
-
修改后重新启用流并确认处理性能改善。
流连接机制
流水线本身不直接处理消息。要使流水线对输入数据生效,必须将其连接至一个或多个流。该连接决定了哪些消息由该流水线处理,从而精确控制不同类型日志数据的加工与增强方式。
内置函数
route_to_stream
可在流水线规则中用于将消息路由至另一流。
消息一旦被路由,流水线处理器会自动识别并执行与该目标流连接的所有流水线。尽管流水线可通过消息路由触发其他流水线,但所有传入消息必须首先通过至少一个附有流水线的流。
默认流
所有被 安全数据湖 接收的消息最初都会路由至默认流。您可将此流作为流水线处理的入口点,使传入消息能路由至更多流并接受后续处理。
但若您希望使用原始流匹配功能(即流规则),可配置 流水线处理器 使其在 消息过滤链 之后运行(位于 消息处理器配置 区域,该区域在 系统 > 配置 页面),并将流水线连接至现有流。这使您能精细控制提取、转换和富化过程。
默认情况下,所有被
安全数据湖
接收的消息最初会路由至
默认流
(
所有消息
)。您可将此流作为流水线处理的起点,例如将消息路由至附加流或应用特定转换规则。
若您倾向使用传统的 基于流规则的匹配 功能,可配置 流水线处理器 使其在 消息过滤链 之后运行 系统 → 配置 → 消息处理器配置 。该方法允许您将管道连接到现有流,并精细控制提取、转换和丰富过程。
消息处理器排序
消息处理器的顺序会显著影响消息处理方式。设计流和管道时,请确保处理器顺序符合预期逻辑,尤其是当后续处理器依赖链中早期修改或丰富的数据时。