logstash无法获取变量
试过各种方法,最终存储到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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自问自答吧,因为是刚接触elk,不知道错误在哪里,方向一直是错的,最后才发现错误提示在es的tags[_grokparsefailure],是grok正则匹配的问题
之前写过一篇相关的文章,也是自己的一点经验总结,其中包含了grok、geoip、date 常用插件的使用,也有谈及官方提供的 Grok Constructor 调试工具,方便我们编写匹配规则,希望有所帮助。
https://github.com/jasonGeng8...