[英]logstash: grok parse failure
我有这个配置文件
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问候你好
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”]}
我做错了什么?
同样重要的是-是否有任何指南可以很好地总结这种过滤方法? 弹性导杆不够详细。
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
没有与该日期格式匹配的stock grok模式,但是很容易将自定义模式组合在一起。 另外,请注意,日志消息中标记之间的分隔符不是空格,而是制表符。 我们可以使用\\s
来匹配任何空白字符。 工作示例:
(?<timestamp>%{WORD}-%{MONTHDAY}-%{YEAR}-%{TIME})\s%{IP:client}\s%{WORD:method}\s%{WORD:text}
同样重要的是-是否有任何指南可以很好地总结这种过滤方法? 弹性导杆不够详细。
除了特定于grok的%{PATTERN_NAME:variable}
表示法之外,这只是普通的正则表达式,其他地方都有许多入门指南。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.