nginx(tengine)訪問日志分片


說明

nginx日志按天分片是運維的基本要求,不僅可以減小文件大小,方便檢索關鍵數據,也可以定時刪除過期的日志。可是nginx和tengine默認並不支持文件分片,因此需要額外處理。

另外,日志分片需要借助 ngx_http_log_module 模塊,默認通過yum安裝的nginx並不攜帶此模塊,需要額外編譯。而tengine默認自帶了ngx_http_log_module模塊,因此建議使用者直接源碼編譯tengine即可。

原理

日志分片的原理是利用命名管道。linux下一切皆文件,因此創建命名管道作為linux的訪問日志,由第三方程序連接命名管道,獲取數據后按時間進行分片。這里的第三方程序既可以是由使用者自己編寫的處理程序,也可使用開源的軟件,如 cronolog。下文采用cronolog實現日志分片。

步驟

  1. 創建命名管道:mkfifo /opt/logs/nginx/access.log
  2. 啟動cronolog:
cronolog /opt/logs/nginx/access.log.%Y-%m-%d <  /opt/logs/nginx/access.log &
cronolog /opt/logs/nginx/error.log.%Y-%m-%d < /opt/logs/nginx/error.log &
  1. 修改nginx配置文件:
    http內
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log   /opt/logs/nginx/access.log main;
    
  2. 重啟nginx:nginx -s reload


免責聲明!

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



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