logstash无法获取变量

发布于 2022-09-05 03:39:19 字数 1482 浏览 22 评论 0

试过各种方法,最终存储到es,发现在grok定义的变量%{}无法在后面获取,最终es索引中只有一个message,没有clientip、ident、auth之类变量,但是网上看到别人的都可以存储

input {        
    file {  
        path => "/var/tomcat8/logs/vg_access_log*.txt"  
        sincedb_path => "/usr/local/logstash/etc/sincedb_tomcat_log.txt"
        type => "tomcat_log"
        add_field => {"tomcatip" => "xxx"}        
    }  
}

filter{    
    if [type] == "tomcat_log" {
        grok{
            match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{URIPATHPARAM:request}(?: HTTP/%{NUMBER:httpversion})?|-)\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{NUMBER:responsetime} \"(?:%{URI:referrer}|-)\" %{QS:agent} "
                        }

        }
        kv {
            source => "request"
            field_split => "&?"
            value_split => "="
        }
        date{
            match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
            target => ["writetime"]
        }        

        mutate {
            convert => { 
                "response" => "integer" 
                "bytes" => "integer" 
                "responsetime" => "integer" 
            }
        }
        
    }
}

output {
    if [type] == "tomcat_log" {        
        elasticsearch {
            hosts => ["xxx:9200"]
            index => "tomcat-log-%{+YYYY.MM.dd}"
        }        
        
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

水波映月 2022-09-12 03:39:19

自问自答吧,因为是刚接触elk,不知道错误在哪里,方向一直是错的,最后才发现错误提示在es的tags[_grokparsefailure],是grok正则匹配的问题

忆伤 2022-09-12 03:39:19

之前写过一篇相关的文章,也是自己的一点经验总结,其中包含了grok、geoip、date 常用插件的使用,也有谈及官方提供的 Grok Constructor 调试工具,方便我们编写匹配规则,希望有所帮助。

https://github.com/jasonGeng8...

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