logstash:grok解析失败

时间:2015-05-11 12:45:11

标签: logging logstash logstash-grok

我有这个配置文件

input {
  stdin {}
   file {
    type => "txt"
    path => "C:\Users\Gck\Desktop\logsatash_practice\input.txt"
    start_position=>"beginning"
  }
}


filter {
    grok {
        match => [ "message", "%{DATE:timestamp} %{IP:client} %{WORD:method} %{WORD:text}"]
      }
    date {
        match => [ "timestamp", "MMM-dd-YYYY-HH:mm:ss" ]
        locale => "en"
    }
}

output {
    file {
        path => "C:\Users\Gck\Desktop\logsatash_practice\op\output3.txt"
    }
}

让我们说这是我的意见:

MAY-08-2015-08:00:00 55.3.244.1 GET hello

MAY-13-2015-13:00:00 56.4.245.2获取世界

运行之后,我收到一条消息:grokparse失败。

这是输出:

{ “消息”: “MAY-08-2015-08:00:00 \ t55.3.244.1 \ thello \ r”, “@版本”: “1”, “@时间戳”:“2015-05 -11T12:51:05.268Z “ ”类型“: ”TXT“, ”宿主“: ”用户-PC“, ”路径“: ”C:\用户\ GCK \桌面\ logsatash_practice \ input.txt中“,” 标签“:[” _ grokparsefailure“]}

{ “消息”: “MAY-13-2015-13:00:00 \ t56.4.245.2 \ t世界\ r”, “@版本”: “1”, “@时间戳”:“2015-05 -11T12:51:05.269Z “ ”类型“: ”TXT“, ”宿主“: ”用户-PC“, ”路径“: ”C:\用户\ GCK \桌面\ logsatash_practice \ input.txt中“,” 标签“:[” _ grokparsefailure“]}

我做错了什么?

同样重要 - 是否有任何指南能够以清晰的方式总结这种过滤事物?弹性导轨不够详细。

1 个答案:

答案 0 :(得分:1)

DATE grok模式的定义如下:

DATE %{DATE_US}|%{DATE_EU}

DATE_US和DATE_EU的定义如下:

DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}

我可以继续,但已经很清楚,这与您的日志消息示例的实际内容不符:

MAY-08-2015-08:00:00 55.3.244.1 GET hello

没有与此日期格式匹配的库存格局模式,但很容易将自定义日期格式组合在一起。另请注意,日志消息中的标记之间的分隔符不是空格而是制表符。我们可以使用\s来匹配任何空格字符。工作示例:

(?<timestamp>%{WORD}-%{MONTHDAY}-%{YEAR}-%{TIME})\s%{IP:client}\s%{WORD:method}\s%{WORD:text}
  

同样重要 - 是否有任何指南能够以清晰的方式总结这种过滤事物?弹性导轨不够详细。

除了特定于grok的%{PATTERN_NAME:variable}表示法之外,这只是简单的正则表达式,并且有许多其他地方的介绍性指南。