您好,登錄后才能下訂單哦!
小編給大家分享一下linux運維中nginx日志進行輪替的案例,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
linux系統上有一個非常好用的輪替服務——logrotate。通過這個服務,可以對日志文件進行輪替管理。當日志文件過大時,可以對其進行切割成多個小的日志文件,還可以對其進行壓縮處理。nginx默認的日志文件access.log以及error.log日志文件,是不會自行進行輪替的。所以,經常會用logrotate對nginx的日志進行輪替管理。
logrotate
對于logrotate這個程序的運行,是掛在系統的定時任務中每日執行的。
# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status ……
下面,我們來看看logrotate的配置文件/etc/logrotate.conf。
# 通過man logrotate查看更多信息 # 下面是默認配置 weekly <=== 默認一周進行一次輪替操作 rotate 4 <=== 默認保存4份日志文件 create <==== 當輪替完成后,創建一個新的日志文件 dateext <=== 輪替的文件名前加上日期以便管理 #compress <=== 默認對輪替的文件不進行壓縮,如果想壓縮,就把#去掉 #將/etc/logrotate.d目錄下的文件加載進來 include /etc/logrotate.d # 下面是兩個日志文件輪替的規則 /var/log/wtmp { <=== 指定文件名 monthly <=== 一個月進行一次輪替 create 0664 root utmp <=== 新的日志文件權限及所有人,所屬組設置 minsize 1M <=== 日志文件至少有1M時候才進行輪替 rotate 1 <=== 只保留一份日志文件 } /var/log/btmp { missingok <=== 如果日志文件不存在,則不報錯,直接忽略 notifempty <=== 如果日文文件是空的則不進行輪替 monthly create 0600 root utmp rotate 1 }
在了解完logrotate的配置文件后,我們就可以自己弄一個日志進行輪替練習了。首先,我們準備一個日志文件
# ll logrotate_learn.log -rwx------ 1 www www 223288003 Nov 12 09:05 logrotate_learn.log
這里,我們最好給該日志文件加上-a屬性,只能向其新增內容。
# chattr +a logrotate_learn.log
接下來,我們要思考該日志文件的輪替規則了。這里,我們打算每周進行一次輪替并對輪替的文件進行壓縮處理,并且當文件大小超過10M時候才進行輪替,另外,保留7份日志文件。這里,還有一點需要注意的是。因為該文件有a屬性,所以輪替前需要將a屬性刪除,然后在輪替完成后再將a屬性加上去。那么,現在我們需要寫配置規則了
vim /etc/logrotate.d/logrotate_learn # 輪替練習 /root/logrotate_learn.log { missingok notifempty weekly rotate 7 size=10M create 0700 www www compress sharedscripts prerotate /usr/bin/chattr -a /root/logrotate_learn.log endscript sharedscripts postrotate /usr/bin/chattr +a /root/logrotate_learn.log endscript }
下面,我們來進行輪替。
# logrotate [-vf] logfile 選項與參數: -v :啟動顯示模式,會顯示logrotate 運作的過程喔! -f :不論是否符合,強制每個日志文件都進行rotate 的動作! # logrotate -v /etc/logrotate.d/logrotate_learn reading config file /etc/logrotate.d/logrotate_learn Allocating hash table for state file, size 15360 B …… # ll logrotate_learn.log* -rwx------ 1 www www 0 Nov 12 10:15 logrotate_learn.log -rwx------ 1 www www 20974585 Nov 12 10:15 logrotate_learn.log.1.gz
對nginx日志文件進行輪替管理
學完后如果對日志文件進行輪替管理后,我們現在進入實戰練習。
# ll /www/wwwlogs/ total 1852452 -rwx------ 1 www www 350288 Nov 12 02:50 access.log -rwx------ 1 www www 14016937 Nov 11 22:44 isunshinenet.com.error.log -rwx------ 1 www www 300416647 Nov 11 22:44 isunshinenet.com.log -rwx------ 1 www www 0 Sep 30 09:57 nginx_error.log
我們需要對這四個日志文件進行輪替管理,首先,創建好配置文件。
# 對nginx日志文件進行呢輪替 /www/wwwlogs/access.log /www/wwwlogs/nginx_error.log /www/wwwlogs/isunshinenet.com.error.log /www/wwwlogs/isunshinenet.com.log { missingok notifempty daily rotate 7 size=1M create 0700 www www sharedscripts postrotate if [ -f /www/server/nginx/logs/nginx.pid ];then /www/server/nginx/sbin/nginx -s reload fi endscript }
看完了這篇文章,相信你對linux運維中nginx日志進行輪替的案例有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。