我正在尝试使用grok
过滤“last”命令的输出。
grok
模式仅匹配第一个变量“user”。
它不匹配任何模式。
你能否告诉我这里缺少的东西。
日志:
sam pts/0 172.19.16.3 Tue Mar 3 11:32 - 11:39 (00:07)
使用的Grok模式:
match => [ "message", "%{USER:user} %{TTY:terminal} %{IPORHOST:client} %{TIMESTAMP_ISO8601:date} %{NUMBER:duration}" ]
答案 0 :(得分:1)
您的模式有几个问题:
你必须照顾空白
如果您有以下数据:
username foobar
模式:
%{USER:user} %{WORD}
将不匹配,因为您在两个单词之间有几个空格。如果你这样做:
%{USER:user} +%{WORD}
模式将匹配,因为您告诉grok在两个单词之间寻找多个空格。 尝试一次只用http://grokdebug.herokuapp.com/检查您的模式。首先尝试为各个部分设计GROK模式,如果它们有效,请尝试将它们逐个放在一起。
看一下模式定义。它们可以在以下位置找到: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
特别是TTY模式在: https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns