我有一个输入线,看起来像这样:
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"
]
]
}
我想将qazxsw POI分成独立的领域,但似乎无法得到它的工作。我已经试过这样:
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>.*)
部分将匹配任意字符,0或多次出现,尽可能少,直至第一name
,和.
attr_type
图案将贪婪“吃掉”的行的其余部分直至其结束。