Grok
Grok 处理器使用模式匹配来从非结构化数据中构建并提取重要的键。
配置
下表描述了与 Grok 处理器配合使用以构建数据并使其更易于查询的选项。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
break_on_match | 否 | 布尔型 | 指定是匹配所有模式(true )还是在找到第一个成功匹配后停止(false )。默认为 true 。 |
grok_when | 否 | 字符串 | 指定 grok 处理器在何种条件下执行匹配。默认情况下无条件。 |
keep_empty_captures | 否 | 布尔型 | 启用保留处理输出中的 null 捕获。默认为 false 。 |
keys_to_overwrite | 否 | 列表 | 指定当捕获与现有键具有相同键值时,哪些现有键将被覆盖。默认为 [] 。 |
match | 否 | 映射 | 指定哪些键应匹配特定模式。默认为空响应正文。 |
named_captures_only | 否 | 布尔型 | 指定是否仅保留命名捕获。默认为 true 。 |
pattern_definitions | 否 | 映射 | 允许使用可在响应正文中内联使用的自定义模式。默认为空响应正文。 |
patterns_directories | 否 | 列表 | 指定哪些目录路径包含自定义模式文件。默认为空列表。 |
pattern_files_glob | 否 | 字符串 | 指定从 pattern_directories 指定的目录中使用哪些模式文件。默认为 * 。 |
target_key | 否 | 字符串 | 指定用于存储所有捕获的父级键。默认值为 null 。 |
timeout_millis | 否 | 整数 | 匹配发生的最大时间量。设置为 0 会阻止任何匹配发生。默认为 30,000 。 |
performance_metadata | 否 | 布尔型 | 是否将性能元数据添加到事件中。默认为 false 。更多信息请参阅Grok 性能元数据。 |
条件 Grok
可以通过使用 grok_when
选项配置 grok
处理器以有条件地运行。以下是使用 grok_when
的 Grok 处理器配置示例。
processor:
- grok:
grok_when: '/type == "ipv4"'
match:
message: ['%{IPV4:clientip} %{WORD:request} %{POSINT:bytes}']
- grok:
grok_when: '/type == "ipv6"'
match:
message: ['%{IPV6:clientip} %{WORD:request} %{POSINT:bytes}']
grok_when
选项可以接受条件表达式。此表达式在表达式语法文档中详细说明。
Grok 性能元数据
当 performance_metadata
选项设置为 true
时,grok
处理器会向每个事件添加以下元数据键:
_total_grok_processing_time
:grok
处理器匹配事件所花费的总时间(毫秒)。这是基于事件上运行且已启用performance_metadata
选项的所有grok
处理器的处理时间总和。_total_grok_patterns_attempted
:事件上所有grok
处理器尝试grok
模式匹配的总次数。
要在事件发送到管道内的接收器时包含 Grok 性能元数据,请使用 add_entries
处理器来描述要包含的元数据,如以下示例所示:
processor:
- grok:
performance_metadata: true
match:
log: "%{COMMONAPACHELOG"}
- add_entries:
entries:
- add_when: 'getMetadata("_total_grok_patterns_attempted") != null'
key: "grok_patterns_attempted"
value_expression: 'getMetadata("_total_grok_patterns_attempted")'
- add_when: 'getMetadata("_total_grok_processing_time") != null'
key: "grok_time_spent"
value_expression: 'getMetadata("_total_grok_processing_time")'
指标
下表描述了常见的抽象处理器指标。
指标名称 | 类型 | 描述 |
---|---|---|
recordsIn | 计数器 | 表示记录进入管道组件的指标。 |
recordsOut | 计数器 | 表示记录从管道组件流出的指标。 |
timeElapsed | 计时器 | 表示管道组件执行期间经过时间的指标。 |
Grok 处理器包含以下自定义指标。
计数器
grokProcessingMismatch
:记录与匹配字段中指定的任何模式不匹配的记录数。grokProcessingMatch
:记录与match
字段中至少一个模式匹配的记录数。grokProcessingErrors
:记录记录处理错误的总数。grokProcessingTimeouts
:记录匹配时超时的记录总数。
计时器
grokProcessingTime
:单个记录与match
模式匹配所花费的时间。此计时器最有用的指标是avg
指标,因为它提供了匹配记录的平均时间。