繁体   English   中英

如何使用Grok在Logstash中解析日志字符串?

[英]How to parse a log string in Logstash using Grok?

我正在尝试使用Grok解析以下字符串;

2018-06-08 13:26:02.002851: <action cmd="run" options="IGNORE_ERROR" path="/usr/lib/vmware/likewise/bin/lw-lsa get-metrics"> (/etc/vmware/vm-support/ad.mfx) took 0.000 sec

我想将以上内容最终分成一些列,例如TIMESTAMP, ACTION, OPTIONS, PATH等-我已经尝试了多种组合,但到目前为止都失败了。

以上日志的Grok模式:->

%{TIMESTAMP_ISO8601:time}:%{SPACE}\\<%{WORD:action}%{SPACE} %{DATA:kvpairs}\\>%{SPACE}\\(%{DATA:path_2}\\)%{SPACE}took%{SPACE}%{NUMBER:time_taken}%{SPACE}%{WORD:time_unit}

在上面的grok模式中,我在名为kvpairs的事件中捕获了cmdoptionspath 这是因为可以使用kv过滤器在logstash中轻松提取这些键值对。 因此,您的过滤器配置将如下所示:->

filter{
    grok(
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp}:%{SPACE}\<%{WORD:action}%{SPACE} %{DATA:kvpairs}\>%{SPACE}\(%{DATA:path_2}\)%{SPACE}took%{SPACE}%{NUMBER:time_taken}%{SPACE}%{WORD:time_unit}"}
    )

    kv{
        source => "kvpairs"
    }

    date{
        match => ["timestamp","yyyy-MM-dd HH:mm:ss.SSS"]
    }
}

默认情况下, kv过滤器将空格作为定界符,并将提取cmdoptionspath列。 date过滤器将使@timestamp变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM