cat cut-nginx-log.sh
[root@ali-idn-pro-nginx-ps01 script]# cat /data/script/cut-nginx-log.sh#!/bin/bash
logs_path=/data/log/nginx/yesterday=$(date +%y%m%d)
#按天切割日誌
mv $/access.log $/access-$.log
mv $/error.log $/error-$.log
#向nginx主程序傳送usr1訊號,重新開啟日誌檔案,否則會繼續往mv後的檔案寫資料的。原因在於:linux系統中,核心是根據檔案描述符來找檔案的。如果不這樣操作導致日誌切割失敗。
kill -usr1 `ps axu | grep "
nginx: master process
" | grep -v grep | awk ''`
#delete 15
day nginx log
find $ -type f -mtime +15 | xargs rm -f
exit
0
定時任務
#delete 15day nginx log
0000 * * * /bin/bash /data/script/cut-nginx-log.sh
按小時切割nginx日誌
cat /data/cut_nginx_log.sh
#!/bin/bashlogs_path=/var/log/nginx/backup_path=/backup_nginx_logs/yesterday=$(date +%y%m%d%h)
#切割日誌
mv $/access.log $/access_$.log
mv $/error.log $/error_$.log
#向nginx主程序傳送usr1訊號,重新開啟日誌檔案,否則會繼續往mv後的檔案寫資料的。
kill -usr1 `ps axu | grep "
nginx: master process
" | grep -v grep | awk ''`
#壓縮日誌減少空開使用量
cd $backup_path
tar zcf access_$yesterday.tar.gz access_$yesterday.log
tar zcf error_$yesterday.tar.gz error_$yesterday.log
#刪除7天前的日誌和沒壓縮的日誌檔案
cd $
find $ -mtime +7 -name "
*.tar.gz
" | xargs rm -f
find $ -mtime +1 -name "
*.log
" | xargs rm -f
exit
0
定時任務:每個小時執行一次
00 */1 * * * bash /data/cut_nginx_log.sh
k8s部署nginx日誌切割
cat cut_k8s_nginx_log.shfor pod in $(kubectl get pods -n service-a | grep gateway | awk '
'); do
kubectl exec -ti -n service-a $pod -- /bin/mv /var/log/nginx/access.log /var/log/nginx/access.$(date +%f -d -1day).log
kubectl exec -ti -n service-a $pod -- /usr/sbin/nginx -s reopen
done
配合定時任務定時切割
00 07 * * * bash /data/scripts/cut_k8s_nginx_log.sh
nginx日誌切割
web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...
nginx 日誌切割
直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...
Nginx日誌切割
編輯指令碼tianshl tianshl nginx vim nginx log division.sh指令碼內容 bin sh 昨天日期 yesterday date v 1d y m d 日誌目錄 log path usr local var log nginx sdk日誌路徑 sdk path...