nginx 日誌相關配置總結

設置位於nginx.conf:
        log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $request_time $upstream_response_time';
        access_log /logs/nginx/access.log main;
        error_log /logs/nginx/error.log;
設置能夠放在http{}中也能夠放在server{}中,後者會針對每一個server作不一樣配置. 
其中最應該關注的除了status,還有request_time 和upstream_response_time有一些細微的差異
request_time官網描述:request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。
指的就是從接受用戶請求的第一個字節到發送完響應數據的時間,即包括接收請求數據時間、程序響應時間、輸出
而真正程序的響應時間應該用$upstream_response_time。
 
 

 
日誌自動切分:利用logrotate,首先安裝Logrotate,
而後在/etc/logrotate.d 中加入一個文件(注意若是是nginx經過apt-get安裝的話該步驟是自動的,全部經過apt-get安裝的程序日誌都會自動生成logrotate 配置)
 
配置相似於
logs/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}
 
該配置會按照天來切分.固然最好還要用
/usr/bin/find /logs/nginx -mtime +3 -name "*.log.*" -exec /bin/rm -r {} \;
配置到crontab中按期執行來清理多餘的切分文件,不然容易磁盤溢出. 
相關文章
相關標籤/搜索