logstash配置了grok,但是kibana查看没有生效

发布于 2022-09-11 17:49:29 字数 1961 浏览 46 评论 0

各位大虾好!

   我现在要用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖凝香 2022-09-18 17:49:29

问题解决了~

原来不能以日志的样子做grok,而是要以kibana实际展示的样子做grok。

kibana会自动给双引号添加一个转义符,所以有些字段反而不能用QS,要用DATA搭配\"

财迷小姐 2022-09-18 17:49:29

你好,请问具体怎么搭配daka使用,我也遇到了你一样的问题,求指教

input {
kafka {

bootstrap_servers => "192.168.193.133:9092,192.168.193.134:9092,192.168.193.135:9092"
topics => "nginx_access_log"
auto_offset_reset => "latest"
type => "nginx_access_log"

}
}

filter {
grok {

match => {
"message" => "%{IPORHOST:client_ip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request} (?:HTTP/%{NUMBER:http_version})?|-)\" %{NUMBER:status} %{NUMBER:upstream_status} (?:%{NUMBER:bytes}|-) %{QS:http_referer} %{QS:user_agent} %{QS:http_x_forwarded_for} %{QS:upstream_addr} %{NUMBER:request_time}"
}

}
}

output {
elasticsearch {

hosts => ["http://192.168.193.130:9200"]
index => "nginx_access_log-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"

}
stdout {

codec => rubydebug

}
}

image.png
感觉就是多了一个转义,在grok验证工具里能跑通,可是logstah就是不行

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文