Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 如何使用Grok解析Logstash中的日志字符串?_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash_Logstash Grok - Fatal编程技术网 elasticsearch 如何使用Grok解析Logstash中的日志字符串?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch 如何使用Grok解析Logstash中的日志字符串?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

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

elasticsearch 如何使用Grok解析Logstash中的日志字符串?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash 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 2018-06-08 13:26:02.002851:(/etc/vmware/vm-support/a

我正在尝试使用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
2018-06-08 13:26:02.002851:(/etc/vmware/vm-support/ad.mfx)花费了0.000秒

我想把上面的内容分成几列,比如
时间戳、操作、选项、路径等,我尝试了多种组合,但迄今为止都失败了

上述日志的Grok模式:->

%%{TIMESTAMP_ISO8601:time}:%%{SPACE}\%%{SPACE}\({DATA:path_2}\)%%{SPACE}占用%{SPACE}%{NUMBER:time_占用%{SPACE}%{WORD:time_单位}

在上面的grok模式中,我在名为kvpairs的事件中捕获了
cmd
options
path
。这是因为可以使用
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"]
    }
}
过滤器{
格罗克(
match=>{“message”=>“%{TIMESTAMP_ISO8601:TIMESTAMP}:%{SPACE}\%{SPACE}\({DATA:path_2}\)%{SPACE}占用%{SPACE}%{NUMBER:time_占用时间}%{SPACE}%{WORD time:time_unit}
)
千伏{
source=>“kvpairs”
}
日期{
匹配=>[“时间戳”,“yyyy-MM-dd HH:MM:ss.SSS”]
}
}
默认情况下,
kv
过滤器将空格作为分隔符,并将提取列
cmd
选项
路径

date
过滤器将使
@timestamp
变为变量。

您应该能够尝试并最终使用grok调试器解决此问题: