溫馨提示×

溫馨提示×

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

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

Linux中l(wèi)ogrotate如何進(jìn)行日志文件管理

發(fā)布時間:2022-01-24 13:59:07 來源:億速云 閱讀:214 作者:柒染 欄目:開發(fā)技術(shù)

Linux中l(wèi)ogrotate如何進(jìn)行日志文件管理,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

系統(tǒng)中發(fā)生的各種有用的信息都會保留到日志文件中,在排查過程或者系統(tǒng)分析性能實(shí)會經(jīng)常用到日志文件。對于繁雜的日志文件我們可以使用logrotate進(jìn)行管理。

logrotate是個十分有用的工具,它可以自動對日志進(jìn)行截斷(或輪循)、壓縮以及刪除舊的日志文件。例如,你可以設(shè)置logrotate,讓/var/log/foo日志文件每30天輪循,并刪除超過6個月的日志。配置完后,logrotate的運(yùn)作完全自動化,不必進(jìn)行任何進(jìn)一步的人為干預(yù)。另外,舊日志也可以通過電子郵件發(fā)送,不過該選項(xiàng)超出了本教程的討論范圍。

主流Linux發(fā)行版上都默認(rèn)安裝有l(wèi)ogrotate包,如果出于某種原因,logrotate沒有出現(xiàn)在里頭,你可以使用apt-get或yum命令來安裝。

在Debian或Ubuntu上:

# apt-get install logrotate cron

在Fedora,CentOS或RHEL上:

# yum install logrotate crontabs

logrotate的配置文件是/etc/logrotate.conf,通常不需要對它進(jìn)行修改。日志文件的輪循設(shè)置在獨(dú)立的配置文件中,它(們)放在/etc/logrotate.d/目錄下。

樣例一

在第一個樣例中,我們將創(chuàng)建一個10MB的日志文件/var/log/log-file。我們將展示怎樣使用logrotate來管理該日志文件。

我們從創(chuàng)建一個日志文件開始吧,然后在其中填入一個10MB的隨機(jī)比特流數(shù)據(jù)。

# touch /var/log/log-file# head -c 10M  /var/log/log-file

由于現(xiàn)在日志文件已經(jīng)準(zhǔn)備好,我們將配置logrotate來輪循該日志文件。讓我們?yōu)樵撐募?chuàng)建一個配置文件。

# vim /etc/logrotate.d/log-file

/var/log/log-file {    monthly    rotate 5    compress    delaycompress    missingok    notifempty    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}

這里:

  • monthly: 日志文件將按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。

  • rotate 5: 一次將存儲5個歸檔日志。對于第六個歸檔,時間最久的歸檔將被刪除。

  • compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用gzip進(jìn)行壓縮。

  • delaycompress: 總是與compress選項(xiàng)一起用,delaycompress選項(xiàng)指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。

  • missingok: 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。

  • notifempty: 如果日志文件為空,輪循不會進(jìn)行。

  • create 644 root root: 以指定的權(quán)限創(chuàng)建全新的日志文件,同時logrotate也會重命名原始日志文件。

  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下,rsyslogd 進(jìn)程將立即再次讀取其配置并繼續(xù)運(yùn)行。

上面的模板是通用的,而配置參數(shù)則根據(jù)你的需求進(jìn)行調(diào)整,不是所有的參數(shù)都是必要的。

樣例二

在本例中,我們只想要輪循一個日志文件,然而日志文件大小可以增長到50MB。

# vim /etc/logrotate.d/log-file

/var/log/log-file {    size=50M    rotate 5    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}

樣例三

我們想要讓舊日志文件以創(chuàng)建日期命名,這可以通過添加dateext常熟實(shí)現(xiàn)。

# vim /etc/logrotate.d/log-file

/var/log/log-file {    monthly    rotate 5    dateext    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}

這將讓歸檔文件在它們的文件名中包含日期信息。

排障

這里提供了一些logrotate設(shè)置的排障提示。

1. 手動運(yùn)行l(wèi)ogrotate

logrotate可以在任何時候從命令行手動調(diào)用。

要調(diào)用為/etc/lograte.d/下配置的所有日志調(diào)用logrotate:

# logrotate /etc/logrotate.conf

要為某個特定的配置調(diào)用logrotate:

# logrotate /etc/logrotate.d/log-file
2. 演練

排障過程中的最佳選擇是使用‘-d’選項(xiàng)以預(yù)演方式運(yùn)行l(wèi)ogrotate。要進(jìn)行驗(yàn)證,不用實(shí)際輪循任何日志文件,可以模擬演練日志輪循并顯示其輸出。

# logrotate -d /etc/logrotate.d/log-file

Linux中l(wèi)ogrotate如何進(jìn)行日志文件管理

正如我們從上面的輸出結(jié)果可以看到的,logrotate判斷該輪循是不必要的。如果文件的時間小于一天,這就會發(fā)生了。

3. 強(qiáng)制輪循

即使輪循條件沒有滿足,我們也可以通過使用‘-f’選項(xiàng)來強(qiáng)制logrotate輪循日志文件,‘-v’參數(shù)提供了詳細(xì)的輸出。

# logrotate -vf /etc/logrotate.d/log-file

reading config file /etc/logrotate.d/log-filereading config info for /var/log/log-file Handling 1 logs rotating pattern: /var/log/log-file  forced from command line (5 rotations)empty log files are rotated, old logs are removedconsidering log /var/log/log-file  log needs rotatingrotating log /var/log/log-file, log->rotateCount is 5dateext suffix '-20140916'glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'renaming /var/log/log-file.5.gz to /var/log/log-file.6.gz (rotatecount 5, logstart 1, i 5),old log /var/log/log-file.5.gz does not existrenaming /var/log/log-file.4.gz to /var/log/log-file.5.gz (rotatecount 5, logstart 1, i 4),old log /var/log/log-file.4.gz does not exist. . .renaming /var/log/log-file.0.gz to /var/log/log-file.1.gz (rotatecount 5, logstart 1, i 0),old log /var/log/log-file.0.gz does not existlog /var/log/log-file.6.gz doesn't exist -- won't try to dispose of itrenaming /var/log/log-file to /var/log/log-file.1creating new /var/log/log-file mode = 0644 uid = 0 gid = 0running postrotate scriptcompressing log with: /bin/gzip
4. Logrotate的記錄日志

logrotate自身的日志通常存放于/var/lib/logrotate/status目錄。如果處于排障目的,我們想要logrotate記錄到任何指定的文件,我們可以指定像下面這樣從命令行指定。

# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file
5. Logrotate定時任務(wù)

logrotate需要的cron任務(wù)應(yīng)該在安裝時就自動創(chuàng)建了,我把cron文件的內(nèi)容貼出來,以供大家參考。

# cat /etc/cron.daily/logrotate

#!/bin/sh # Clean non existent log file entries from status filecd /var/lib/logrotatetest -e status || touch statushead -1 status > status.cleansed 's/"//g' status | while read logfile datedo    [ -e "$logfile" ] && echo "\"$logfile\" $date"done >> status.cleanmv status.clean status test -x /usr/sbin/logrotate || exit 0/usr/sbin/logrotate /etc/logrotate.conf

logrotate工具對于防止因龐大的日志文件而耗盡存儲空間是十分有用的。配置完畢后,進(jìn)程是全自動的,可以長時間在不需要人為干預(yù)下運(yùn)行。

關(guān)于Linux中l(wèi)ogrotate如何進(jìn)行日志文件管理問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

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

AI