logstash配置了grok,但是kibana查看没有生效
各位大虾好!
我现在要用logstash去匹配日志,日志内容如下:
100.97.73.229 - - [19/Feb/2019:17:43:11 +0800] "GET /news-spread_index-138.html HTTP/1.1" 200 7920 "-" "Mozilla/5.0 (Linux; Android 8.1; MI 6X Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044307 Mobile Safari/537.36 Imou"
我用如下的grok pattern已经成功在grok的测试网站里匹配了:
%{IPORHOST:client_ip} %{USER:ident} %{USER:auth} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|-)" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QUOTEDSTRING:domain} %{QUOTEDSTRING:data}
然后我就写入到logstash的配置文件里:
input {
kafka{
bootstrap_servers=>"172.31.0.84:9092" #这里写的是kafka的ip和端口
topics=>["lcshop-log","lcshop-errorlog"] #这里是对应的topic
decorate_events=>"true"
codec=>plain
}
}
filter {
if [@metadata][kafka][topic] == "lcshop-log" {
mutate {
add_field => {"[@metadata][index]" => "lcshop-log-%{+YYYY-MM}"}
}
grok {
match => { "message" => "%{IPORHOST:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|-)\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QUOTEDSTRING:domain} %{QUOTEDSTRING:data}"}
remove_field => ["message"]
#这里对双引号增加了转义符
}
} else if [@metadata][kafka][topic] == "lcshop-errorlog" {
mutate {
add_field => {"[@metadata][index]" => "lcshop-errorlog-%{+YYYY-MM}"}
}
}
}
output {
elasticsearch {
hosts=>["172.31.0.76:9200"] #这里是es的ip和端口
index=>"%{[@metadata][index]}" #这里对不同的topic分配不同的index
}
}
但是在kibana查看,index已经成功生成,但是grok那部分并没有生效,请问是哪里的问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题解决了~
原来不能以日志的样子做grok,而是要以kibana实际展示的样子做grok。
kibana会自动给双引号添加一个转义符,所以有些字段反而不能用QS,要用DATA搭配\"
你好,请问具体怎么搭配daka使用,我也遇到了你一样的问题,求指教
input {
kafka {
}
}
filter {
grok {
}
}
output {
elasticsearch {
}
stdout {
}
}
感觉就是多了一个转义,在grok验证工具里能跑通,可是logstah就是不行