nginx日志切割定時任務的實現
nginx進行日志切割的好處:
便于管理和查詢:隨著時間的推移,Nginx 日志文件可能會變得非常大。將其切割成較小的、按時間段劃分的文件,使得在需要查找特定時間段的日志時更加方便和高效。
控制存儲空間:未切割的日志文件可能會迅速消耗大量的磁盤空間。通過定期切割并刪除較舊的日志,可以有效地控制存儲空間的使用。
提高處理效率:處理較小的切割后的日志文件比處理一個巨大的整體日志文件要快得多,特別是在進行日志分析、備份或數據挖掘等操作時。
方便備份和歸檔:切割后的日志可以更有組織地進行備份和歸檔,符合數據保留策略和合規(guī)要求。
避免單一文件損壞導致數據丟失:如果一個巨大的日志文件損壞,可能會丟失大量的日志數據。而切割后的多個較小文件,降低了這種風險。
更好地跟蹤和監(jiān)控:可以根據切割后的日志文件,更清晰地跟蹤和監(jiān)控系統(tǒng)在不同時間段的活動和性能。
實現步驟:
1.給access.log日志文件重命名,并備份
在 Linux 系統(tǒng)中,當需要切割 Nginx 日志文件時(例如按天切割),一般需要先將當前日志文件移動并重命名,然后使用“nginx -s reopen”命令重新打開新的日志文件進行記錄
[root@localhost logs]# ls access.log error.log nginx.pid ## nginx的日志文件是/logs/access.log [root@localhost logs]# mv access.log "access.log_$(date +"%Y-%m-%d")" ## 這條命令的作用是將當前的 access.log 文件重命名為 access.log_<當前日期> 的格式 [root@localhost logs]# nginx -s reopen [root@localhost logs]# ls access.log access.log_2024-07-15 error.log nginx.pid ##可以看到7月15的日志已經備份,再有新日志就會記錄在access.log里,
2.編寫定時日志腳本
在生產環(huán)境下,也就是工作中,日志切割主要以定時任務的形式來操作
[root@localhost ~]# mkdir myscripts/ [root@localhost ~]# cd myscripts/ [root@localhost myscripts]# vim cut_nginx_log.sh ## 創(chuàng)建myscripts文件夾,用來存放用戶自己編寫的腳本文件,編寫cut_nginx_log.sh腳本

釋:
腳本代碼:
#!/bin/bash # 定義日志目錄和文件名 LOG_DIR="/opt/nginx/logs" ACCESS_LOG="$LOG_DIR/access.log" ERROR_LOG="$LOG_DIR/error.log" # 獲取當前日期 CURRENT_DATE=$(date +%Y%m%d) # 創(chuàng)建新的日志文件 touch "$ACCESS_LOG.$CURRENT_DATE" touch "$ERROR_LOG.$CURRENT_DATE" # 重命名舊的日志文件 mv "$ACCESS_LOG" "$ACCESS_LOG.$CURRENT_DATE" mv "$ERROR_LOG" "$ERROR_LOG.$CURRENT_DATE" # 向 Nginx 主進程發(fā)送 USR1 信號,使其重新打開日志文件 kill -USR1 $(cat /opt/nginx/logs/nginx.pid)
3.運行日志切割腳本
[root@localhost myscripts]# bash cut_nginx_log.sh ## 運行bash腳本文件 [root@localhost myscripts]# yum install -y tree ## 安裝tree,tree 是一個用于以樹狀圖形式列出目錄內容的命令行工具,能夠清晰地展示目錄和文件的層次結構。 [root@localhost logs]# tree ./

## 用tree 查看logs文件夾,看該目錄的詳細結構,可以看到access.log和error.log都因運行了日志切割腳本生成備份文件
4.將日志切割腳本加入crontab定時任務
[root@localhost ~]# crontab -e
## crontab -e 命令用于編輯當前用戶的定時任務(Cron 任務)配置。

## 每天凌晨 1 點執(zhí)行該腳本任務
crontab定時任務配置講解
crontab 定時任務的配置格式如下:

其中,每個 * 代表的含義分別是:
- 分鐘(0 - 59)
- 小時(0 - 23)
- 日(1 - 31)
- 月(1 - 12 或 JAN - DEC)
- 星期(0 - 6 或 SUN - SAT,0 表示星期日)
以下是一些常見的配置示例:
每 5 分鐘執(zhí)行一次任務:
*/5 * * * * command每天凌晨 1 點執(zhí)行任務:
0 1 * * * command每月 1 號中午 12 點執(zhí)行任務:
0 12 1 * * command每周一早上 8 點執(zhí)行任務:
0 8 * * 1 command每年 1 月 1 日 0 點執(zhí)行任務:
0 0 1 1 * command
請將 command 替換為您實際要執(zhí)行的命令或腳本路徑。
配置完成后,保存并退出編輯界面,定時任務就會按照您設置的規(guī)則生效。
到此這篇關于nginx日志切割定時任務的實現的文章就介紹到這了,更多相關nginx日志切割定時任務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一次nginx 504 Gateway Time-out錯誤排查、解決記錄
這篇文章主要介紹了一次nginx 504 Gateway Time-out錯誤排查、解決記錄,經過反復檢查,發(fā)現造成這個問題的原因就是PHP的CURL沒有設置超時時間,解決辦法只要設置超時時間或者修改一下nginx的配置即可解決,需要的朋友可以參考下2014-05-05

