日志分析(二) logstash patterns

grok-patterns内置了很多基础变量的正则表达式的log解析规则,其中包括apache的log解析(同样可以用于nginx的log解析)。
 
基于nginx日志分析配置:
1.配置nginx日志格式如下:
log_format main '$remote_addr [$time_local]'
' "$request" $status $body_bytes_sent'
' "$http_referer"'
' "$request_time"';
 
access_log /var/log/nginx/access.log main;
对nginx日志进行了一定的筛选,去掉用不上的日志。此时,对于日志格式的约定要比较小心,我在调试过程中,在nginx日志上多写了几个空格,logstash半天解析不出来。
2.logstash日志格式配置如下:
input {
file {
path => "/var/log/nginx/*.log"
}
}
filter {
if [path] =~ "access" {
mutate { replace => { "type" => "nginx_access" } }
grok {
match => { "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:method} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:timeconsumer}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
redis {
data_type => "list"
key => "logstash"
}
}
这样一来,就将nginx日志的请求url,请求方法,请求耗时,响应字节数,请求时间基本上就分离出来了,后续借助kibana就可以做到数据大盘监控与分析。
 
在尝试将logstash致力于处理业务日志的时候,针对业务日志格式,需要定义出一套解析规则,后续完善相关处理表达式.
posted @ 2015-05-04 16:39  飞昂之雪  阅读(3333)  评论(0编辑  收藏  举报