JSON 过滤器插件
编辑JSON 过滤器插件编辑
- 插件版本: v3.2.1
- 发布日期: 2023-12-18
- 变更日志
有关其他版本,请参阅 版本化插件文档.
获取帮助编辑
如果您对插件有任何疑问,请在 Discuss 论坛中发布主题。对于错误或功能请求,请在 Github 中创建问题。有关 Elastic 支持的插件列表,请参阅 Elastic 支持矩阵.
描述编辑
这是一个 JSON 解析过滤器。它接收包含 JSON 的现有字段,并将其扩展为 Logstash 事件中的实际数据结构。
默认情况下,它会将解析后的 JSON 放置在 Logstash 事件的根(顶层),但此过滤器可以配置为使用 target
配置将 JSON 放置到任何任意事件字段中。
当事件解析过程中发生错误时,此插件有一些回退方案。如果 JSON 解析在数据上失败,事件将保持不变,并将标记为 _jsonparsefailure
;然后,您可以使用条件语句来清理数据。您可以使用 tag_on_failure
选项配置此标记。
如果解析后的数据包含 @timestamp
字段,插件将尝试将其用于事件的 @timestamp
,如果解析失败,该字段将重命名为 _@timestamp
,并且事件将标记为 _timestampparsefailure
。
事件元数据和 Elastic Common Schema (ECS)编辑
无论 ECS 兼容性如何,插件的行为都相同,只是在启用 ECS 且未设置 target
时发出警告。
设置 target
选项以避免潜在的模式冲突。
JSON 过滤器配置选项编辑
此插件支持以下配置选项,以及后面描述的 通用选项。
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
是 |
||
否 |
||
否 |
另请参阅 通用选项,了解所有过滤器插件支持的选项列表。
ecs_compatibility
编辑
- 值类型为 字符串
-
支持的值为
-
disabled
: 不使用与 ECS 兼容的字段名称 -
v1
: Elastic Common Schema 兼容行为(在未设置target
时发出警告)
-
控制此插件与 Elastic Common Schema (ECS) 的兼容性。有关详细信息,请参阅 事件元数据和 Elastic Common Schema (ECS)。
通用选项编辑
以下配置选项由所有过滤器插件支持
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
add_field
编辑
- 值类型为 哈希
- 默认值为
{}
如果此过滤器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并使用 %{field}
包含事件的一部分。
示例
filter { json { add_field => { "foo_%{somefield}" => "Hello world, from %{host}" } } }
# You can also add multiple fields at once: filter { json { add_field => { "foo_%{somefield}" => "Hello world, from %{host}" "new_field" => "new_static_value" } } }
如果事件具有字段 "somefield" == "hello"
,则此过滤器在成功时将添加字段 foo_hello
(如果存在),其值为以上内容,并且 %{host}
部分将替换为事件中的该值。第二个示例还将添加一个硬编码字段。
add_tag
编辑
- 值类型为 数组
- 默认值为
[]
如果此过滤器成功,则将任意标记添加到事件。标记可以是动态的,并使用 %{field}
语法包含事件的一部分。
示例
filter { json { add_tag => [ "foo_%{somefield}" ] } }
# You can also add multiple tags at once: filter { json { add_tag => [ "foo_%{somefield}", "taggedy_tag"] } }
如果事件具有字段 "somefield" == "hello"
,则此过滤器在成功时将添加标记 foo_hello
(当然,第二个示例将添加 taggedy_tag
标记)。
id
编辑
- 值类型为 字符串
- 此设置没有默认值。
在插件配置中添加一个唯一的 ID
。如果未指定 ID,Logstash 将生成一个。强烈建议在配置中设置此 ID。当您有两个或多个相同类型的插件时,这尤其有用,例如,如果您有两个 JSON 过滤器。在这种情况下,添加一个命名 ID 将有助于在使用监控 API 时监控 Logstash。
filter { json { id => "ABC" } }
id
字段中的变量替换仅支持环境变量,不支持使用来自秘密存储的值。
remove_field
编辑
- 值类型为 数组
- 默认值为
[]
如果此过滤器成功,则从此事件中删除任意字段。字段名称可以是动态的,并使用 %{field} 示例包含事件的一部分
filter { json { remove_field => [ "foo_%{somefield}" ] } }
# You can also remove multiple fields at once: filter { json { remove_field => [ "foo_%{somefield}", "my_extraneous_field" ] } }
如果事件具有字段 "somefield" == "hello"
,则此过滤器在成功时将删除名为 foo_hello
的字段(如果存在)。第二个示例将删除一个额外的非动态字段。
remove_tag
编辑
- 值类型为 数组
- 默认值为
[]
如果此过滤器成功,则从事件中删除任意标记。标记可以是动态的,并使用 %{field}
语法包含事件的一部分。
示例
filter { json { remove_tag => [ "foo_%{somefield}" ] } }
# You can also remove multiple tags at once: filter { json { remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"] } }
如果事件具有字段 "somefield" == "hello"
,则此过滤器在成功时将删除标记 foo_hello
(如果存在)。第二个示例还将删除一个令人沮丧的、不需要的标记。