神交解析问题
grok parsing issue
我有一个如下所示的输入行:
localhost_9999.kafka.server:type=SessionExpireListener,name=ZooKeeperSyncConnectsPerSec.OneMinuteRate
我可以使用这个模式来解析它:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=%{JAVACLASS:kafka_metric_name}
这给了我这个:
{
"kafka_node": [
[
"localhost_9999.kafka.server"
]
],
"kafka_metric_type": [
[
"SessionExpireListener"
]
],
"kafka_metric_name": [
[
"ZooKeeperSyncConnectsPerSec.OneMinuteRate"
]
]
}
我想将 OneMinuteRate
拆分成一个单独的字段,但似乎无法正常工作。我试过这个:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=%{WORD:kafka_metric_name}.%{WORD:attr_type}"
但那时一无所获。
我也在使用 https://grokdebug.herokuapp.com/ 来测试这些...
您可以将最后一个正则表达式与转义的 .
一起使用(请注意,.
匹配除换行符之外的任何字符,而 \.
将匹配文字点字符),或者最后一个字段使用 DATA
类型,最后一个字段使用 GREEDYDATA
类型:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=% {DATA:kafka_metric_name}\.%{GREEDYDATA:attr_type}
由于 %{DATA:name}
转换为 (?<name>.*?)
而 %{GREEDYDATA:name}
转换为 (?<name>.*)
,因此 name
部分将匹配任何字符,出现 0 次或多次,如尽可能少,直到第一个.
,attr_type
.*
模式将贪婪地"eat up" 剩下的行它的结束。
我有一个如下所示的输入行:
localhost_9999.kafka.server:type=SessionExpireListener,name=ZooKeeperSyncConnectsPerSec.OneMinuteRate
我可以使用这个模式来解析它:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=%{JAVACLASS:kafka_metric_name}
这给了我这个:
{
"kafka_node": [
[
"localhost_9999.kafka.server"
]
],
"kafka_metric_type": [
[
"SessionExpireListener"
]
],
"kafka_metric_name": [
[
"ZooKeeperSyncConnectsPerSec.OneMinuteRate"
]
]
}
我想将 OneMinuteRate
拆分成一个单独的字段,但似乎无法正常工作。我试过这个:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=%{WORD:kafka_metric_name}.%{WORD:attr_type}"
但那时一无所获。
我也在使用 https://grokdebug.herokuapp.com/ 来测试这些...
您可以将最后一个正则表达式与转义的 .
一起使用(请注意,.
匹配除换行符之外的任何字符,而 \.
将匹配文字点字符),或者最后一个字段使用 DATA
类型,最后一个字段使用 GREEDYDATA
类型:
%{DATA:kafka_node}:type=%{DATA:kafka_metric_type},name=% {DATA:kafka_metric_name}\.%{GREEDYDATA:attr_type}
由于 %{DATA:name}
转换为 (?<name>.*?)
而 %{GREEDYDATA:name}
转换为 (?<name>.*)
,因此 name
部分将匹配任何字符,出现 0 次或多次,如尽可能少,直到第一个.
,attr_type
.*
模式将贪婪地"eat up" 剩下的行它的结束。