提取字段
无服务器
非结构化日志消息需要被解析成有意义的字段,这样您才能快速地过滤和分析它们。要提取的常见字段包括时间戳和日志级别,但您也可以提取诸如 IP 地址、用户名或端口等信息。
使用管理流页面上的提取字段选项卡来处理您的数据。用户界面模拟您的更改,并提供经过端到端测试的即时预览。
用户界面还会显示索引问题,例如映射冲突,以便您可以在应用更改之前解决这些问题。
应用的更改不具有追溯性,仅影响未来摄取的数据。
流使用 Elasticsearch 摄取管道来处理您的数据。摄取管道由转换数据的处理器组成。
要添加处理器
使用 JSON 编辑处理器计划在未来的版本中发布。 随着时间的推移,可能会添加更多处理器。
您可以为可选字段下的每个处理器提供一个条件。 条件是为每个文档评估的布尔表达式。 提供一个字段、一个值和一个比较器。 处理器支持以下比较器
- 等于
- 不等于
- 小于
- 小于或等于
- 大于
- 大于或等于
- 包含
- 开头是
- 结尾是
- 存在
- 不存在
在用于字段提取的处理器下,当您设置管道处理器来修改您的文档时,数据预览会向您显示结果的预览,并根据模拟的结果提供额外的过滤选项。
当您添加或编辑处理器时,数据预览会自动更新。
为了避免出现意外结果,请专注于添加处理器,而不是删除或重新排序现有处理器。
数据预览从您的现有数据加载 100 个文档,并使用它们运行您的更改。对于任何新添加的处理器,此模拟是可靠的。您可以在预览期间保存单个处理器,甚至可以重新排序它们。选择“保存更改”会将您的更改应用于数据流。
如果您再次编辑流,请注意以下事项
- 将更多处理器添加到列表末尾将按预期工作。
- 更改现有处理器或重新排序它们可能会导致意外结果。 由于管道可能已经处理了用于采样的文档,因此用户界面无法准确模拟对现有数据的更改。
- 添加新的处理器并将其移动到现有处理器之前可能会导致意外结果。 用户界面仅模拟新的处理器,而不模拟现有的处理器,因此模拟可能无法准确反映对现有数据的更改。
打开忽略失败以在处理器失败时忽略它。 如果您希望即使处理器失败也继续处理文档,这将非常有用。
打开忽略缺失字段以在字段不存在时忽略处理器。 如果您希望即使字段不存在也继续处理文档,这将非常有用。
文档因不同的原因而处理失败。 流可帮助您在部署更改之前轻松查找和处理失败。
以下示例显示并非所有消息都与提供的 Grok 模式匹配
您可以通过选择表格顶部的已解析或失败来过滤您的文档。 选择失败以查看失败的文档
失败显示在进程编辑器的底部
这些失败可能是您应该解决的问题,但在某些情况下,它们也更像是一种警告。
作为处理的一部分,流还会通过端到端地模拟更改来检查映射冲突。 如果检测到映射冲突,流会将处理器标记为失败并显示失败消息
保存后,处理器还会让您快速了解此步骤的处理是否成功以及添加了哪些字段。
当您保存处理器时,流会修改数据流的“最佳匹配”摄取管道。 简而言之,流要么选择已经成为您的数据流一部分的最佳匹配的以 @custom
结尾的管道,要么为您添加一个管道。
流识别相应的 @custom 管道(例如,logs-myintegration@custom
或 logs@custom
)。 它检查在数据流上设置的 default_pipeline。
您可以在管理流 → 高级下的摄取管道中查看默认管道。 在此默认管道中,我们找到调用以 @custom
结尾的管道的最后一个处理器。 对于集成,这将导致一个类似 logs-myintegration@custom
的管道名称。 如果没有集成,唯一可用的 @custom
管道可能是 logs@custom
。
- 如果未检测到默认管道,流会通过更新索引模板将默认管道添加到数据流。
- 如果检测到默认管道,但它不包含自定义管道,流会将管道处理器直接添加到管道。
然后,流会将管道处理器添加到该 @custom
管道的末尾。 此处理器定义将匹配的文档定向到由流管理的专用管道,称为 <data_stream_name>@stream.processing
// Example processor added to the relevant @custom pipeline
{
"pipeline": {
"name": "<data_stream_name>@stream.processing",
"if": "ctx._index == '<data_stream_name>'",
"ignore_missing_pipeline": true,
"description": "Call the stream's managed pipeline - do not change this manually but instead use the Streams UI or API"
}
}
- 例如,logs-my-app-default@stream.processing
然后,流会创建和管理 <data_stream_name>@stream.processing
管道,添加您在 UI 中配置的 处理器。
请勿手动修改由流创建的 <data_stream_name>@stream.processing
管道。 如果需要,您仍然可以手动将您自己的处理器添加到 @custom
管道。 在流创建的管道处理器之前添加处理器可能会导致意外行为。
- 流不支持所有处理器。 我们正在努力在将来添加更多处理器。
- 流不支持所有处理器选项。 我们正在努力在将来添加更多选项。
- 编辑现有处理器或重新排序它们时,数据预览模拟可能无法准确反映对现有数据的更改。
- 不支持字段名称中的点。 您可以在
@custom
管道中使用点展开处理器作为解决方法。 您需要手动添加点处理器。 - 不支持在流 UI 中提供任何任意 JSON。 我们正在努力在将来添加此功能。