三条注意事项:
第一:nginx日志分析最重要的是grok匹配,grok匹配最重要的是使用一个网站来进行判断匹配规则的正确性,网址:,第一个区域:一条日志内容;第二个区域:grok规则,可一个字段一个字段的来适配,具体规则请自行百度。
第二:由于我仅仅测试使用,并没有使用rsyslog或者其它日志收集工具,也没有把收集数据导入到redis中,目前采用的是直接导入到es中进行分析
第三:关于配置文件及其详解
-
input {
-
file {
-
type => "nginx_access"
-
path => ["/data/logs/*.log"]
-
start_position => beginning
-
ignore_older => 0
-
}
-
}
-
filter {
-
grok {
-
match => {
-
"message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:time}\] \"%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:http_status_code} %{NUMBER:bytes} \"(?<http_referer>\S+)\" %{QS:agent} \"(?<http_x_forwarded_for>\S+)\"\"(?<upstream_cache_status>\S+)\""
-
}
-
}
-
geoip {
-
source => "clientip"
-
}
-
}
-
output {
-
elasticsearch {
-
hosts => ["172.16.105.153:9200"]
-
index => "logstash-nginx-access"
-
workers => 2
-
flush_size => 1
-
idle_flush_time => 1
-
template_overwrite => true
-
}
-
stdout {
-
codec => rubydebug
-
}
-
}
配置文件详解:
很多用户在测试的时候,会发现,不能建立索引(或者kibana的创建按钮是灰色的),这个坑困扰了我两天,因为我不是线上测试,是取的旧日志。后来仔细看英文官网才发现两条重要的参数:
1、 start_position => beginning #在正常情况下,日志分析是从最后一条日志进行打印,类似于linux的tail -f ,start_position = beginning这个参数表明,是从日志的第一行开始进行分析,对于旧日志分析至关重要
2、 ignore_older => 0 #而这个参数,忽略旧日志的时间(也就是你设置了多少秒,就会打印从现在往前推多少秒的,默认是往前推一天的日志),设置为0,就是旧日志都会分析。
3、 index这一行要注意,如果你不想折腾,最好使用logstash-开头的索引,因为这个是使用了默认模版来进行分析的,对于初学者来说,不去造一个陌生的自定义的模版轮子的好处是显而易见的。
第四:关于stdout中的标准输出,对于定位问题很有奇效,当你发现启动logstash,并没有得到你想要的结果的时候,来判断问题出在哪相当有用!
阅读(3597) | 评论(0) | 转发(0) |