日志分析(二) 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致力於處理業務日志的時候,針對業務日志格式,需要定義出一套解析規則,后續完善相關處理表達式.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM