溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux運維中nginx日志進行輪替的案例

發(fā)布時間:2020-11-16 10:24:00 來源:億速云 閱讀:227 作者:小新 欄目:建站服務器

小編給大家分享一下linux運維中nginx日志進行輪替的案例,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

linux系統(tǒng)上有一個非常好用的輪替服務——logrotate。通過這個服務,可以對日志文件進行輪替管理。當日志文件過大時,可以對其進行切割成多個小的日志文件,還可以對其進行壓縮處理。nginx默認的日志文件access.log以及error.log日志文件,是不會自行進行輪替的。所以,經(jīng)常會用logrotate對nginx的日志進行輪替管理。

logrotate

對于logrotate這個程序的運行,是掛在系統(tǒng)的定時任務中每日執(zhí)行的。

# 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 <==== 當輪替完成后,創(chuàng)建一個新的日志文件
dateext <=== 輪替的文件名前加上日期以便管理
#compress  <=== 默認對輪替的文件不進行壓縮,如果想壓縮,就把#去掉

#將/etc/logrotate.d目錄下的文件加載進來
include /etc/logrotate.d


# 下面是兩個日志文件輪替的規(guī)則
/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

接下來,我們要思考該日志文件的輪替規(guī)則了。這里,我們打算每周進行一次輪替并對輪替的文件進行壓縮處理,并且當文件大小超過10M時候才進行輪替,另外,保留7份日志文件。這里,還有一點需要注意的是。因為該文件有a屬性,所以輪替前需要將a屬性刪除,然后在輪替完成后再將a屬性加上去。那么,現(xiàn)在我們需要寫配置規(guī)則了

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 
選項與參數(shù):
-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日志文件進行輪替管理

學完后如果對日志文件進行輪替管理后,我們現(xiàn)在進入實戰(zhàn)練習。

# 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

我們需要對這四個日志文件進行輪替管理,首先,創(chuàng)建好配置文件。

# 對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日志進行輪替的案例有了一定的了解,想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI