Nginx學習之自定義訪問日誌
寫在開始
日誌的重要性不言而喻,一般來說我們開發過程中會為每個項目定義自己的日誌格式以及存儲路徑。
就我們普通的JAVAWEB項目來說,重要的日誌一般輸出並存放在Tomcat的log目錄下,並區分日誌輸出級別。用於區分,查閱並統計相關日誌信息。
當然,這不是重點,重點是很多公司,對於日誌的重要性似乎並不是那麼重視,當然這可能跟平台本身有一定的關係。
日誌配置
其實分析Nginx日誌,可以得到很多有用的數據,響應耗時的url、請求時間,各個時間段的請求量,並發量。配合使用ELK日誌係統可以很好的呈現係統使用情況。
一般來說,常見的懶人通用日誌配置,多個項目公用一個access.log或者error.log,導致運行一段時間後日誌文件特別大,幾G甚至幾十G的都有。
下麵,主要來講一下Nginx日誌的正確配置方式。
日誌輸出格式:
#這個要配置在http中
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
項目配置:
limit_req_zone $binary_remote_addr $uri zone=api_read:20m rate=50r/s;#查詢
#報告
server {
listen 80;
server_name report.52itstyle.com;
index login.jsp;
access_log /usr/local/nginx/logs/report.52itstyle.com.access.log access;
#關閉靜態文件的日誌打印
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|ico)?$ {
expires 1d;
access_log off;
proxy_pass https://report;
}
location / {
limit_req zone=api_read burst=5;#請求限流,設置隊列
proxy_pass https://report;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
upstream report {
fair;
server 172.16.1.120:8882 weight=1 max_fails=2 fail_timeout=30s;
server 172.16.1.120:8881 weight=1 max_fails=2 fail_timeout=30s;
}
以上配置,優化了幾點:
- 單個項目配置屬於自己的日誌輸出路徑文件
- 排除無用的靜態文件訪問日誌
當然還有更加優化的方案,比如Nginx日誌按照日期格式輸出,但是Nginx本身是不支持此功能的,隻能通過sheel腳本自己進行切割。
最後更新:2017-05-02 18:00:50
上一篇:
三草兩木微商分銷係統開發定製
下一篇:
追捧熱潮過後,移動醫療正經曆“大洗牌” 33億押注能否賭贏?
如何使用Log4j
如何推進企業唿叫中心建設?米領通信
用戶 'sa' 登錄失敗。原因: 該帳戶被禁用。 (Microsoft SQL Server,錯誤: 18470)
RESTful API 自動化測試神器 WisdomTool REST Client
J2EE中getParameter與getAttribute以及EL表達式${requestScope}和${param[]}
TraceView性能分析工具介紹
花式看超級碗 人工智能、大數據在碗裏
android ListView中Checkbox實現單選,全選,全不選功能——1
Disruptor入門
Java並發——Synchronized優化(輕量級鎖、偏向鎖)