日志文件包含了關(guān)于系統(tǒng)中發(fā)生的事件的有用信息,在排障過程中或者系統(tǒng)性能分析時經(jīng)常被用到。對于忙碌的服務(wù)器,日志文件大小會增長極快,服務(wù)器會很快消耗磁盤空間,這成了個問題。除此之外,處理一個單個的龐大日志文件也常常是件十分棘手的事。
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元錦屏做網(wǎng)站,已為上家服務(wù),為錦屏各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
logrotate是個十分有用的工具,它可以自動對日志進行截斷(或輪循)、壓縮以及刪除舊的日志文件。例如,你可以設(shè)置logrotate,讓/var/log/foo日志文件每30天輪循,并刪除超過6個月的日志。配置完后,logrotate的運作完全自動化,不必進行任何進一步的人為干預。
在Debian或Ubuntu上:
在Fedora,CentOS或RHEL上:
logrotate的配置文件是/etc/logrotate.conf,通常不需要對它進行修改。日志文件的輪循設(shè)置在獨立的配置文件中,它(們)放在/etc/logrotate.d/目錄下。
參數(shù)詳解:
上面的模板是通用的,而配置參數(shù)則根據(jù)你的需求進行調(diào)整,不是所有的參數(shù)都是必要的。
logrotate可以在任何時候從命令行手動調(diào)用。要調(diào)用為/etc/lograte.d/下配置的所有日志調(diào)用logrotate:
要為某個特定的配置調(diào)用logrotate,執(zhí)行一次切割任務(wù)測試
即使輪循條件沒有滿足,我們也可以通過使用‘-f’選項來強制logrotate輪循日志文件,‘-v’參數(shù)提供了詳細的輸出。
防止訪問日志文件過大
logrotate工具對于防止因龐大的日志文件而耗盡存儲空間是十分有用的。配置完畢后,進程是全自動的,可以長時間在不需要人為干預下運行。本教程重點關(guān)注幾個使用logrotate的幾個基本樣例,你也可以定制它以滿足你的需求。
1、linux 自帶的 logrotate 命令
2、定義切割文件相關(guān)信息
/var/log/nginx/*.log {
daily #按天打包
rotate 180 #保存周期為180以內(nèi)的,超過180天的則刪除
missingok
notifempty
dateext
compress
nodelaycompress
sharedscripts
postrotate
/etc/init.d/nginx reload
endscript
}
3、crontab 設(shè)置一個定時任務(wù)
59 23 * * * /usr/sbin/logrotate -f /var/logrotate/nginx /tmp/logrotate.log
在生產(chǎn)環(huán)境中,往往沒有條件給我們?nèi)ebug排查,更多時候我們是通過日志來看具體的報錯日期。
但是日志往往是一直在實時更新,而且記錄條數(shù)龐大,很難直接定位到錯誤信息。這個時候,就可以利用sed命令來截取指定時間段內(nèi)的日志(也是網(wǎng)上大多數(shù)博主的做法)。
具體命令如下:
這條命令可以查詢2020.10.13號當天9點到9點十分中間的所有的日志信息。
但是這條命令的使用有兩個前提(很多網(wǎng)上的博主都沒有提到)
第一,日志輸出的日期格式是要滿足命令中的格式 ,如果不是的話就跟著實際的格式改
第二,輸入的日期必須要真實存在?。?! ,比如說9點整剛好沒有日志輸出,那么這條命令就會失效
更加通配的命令可以是這樣, 使用 號*
這樣無論九點整的時候是否有日志產(chǎn)生,就都可以獲取到9點整到現(xiàn)在的所有日志了
使用 ,將截取到的內(nèi)容輸出到指定的文件中,方便進一步查看
ps:在實際操作中,我們一般會在后面加grep命令做進一步的關(guān)鍵字過濾
有些服務(wù),會自動產(chǎn)生大量的日志文件,如果不限制,會占用磁盤空間。
如果單純的用定時任務(wù)crontab刪除,又不太靈活,這時需要日志神器logrotate。
logrotate工具是系統(tǒng)自帶為了方便進行日志管理而產(chǎn)生的一個工具。
系統(tǒng)會定時運行 logrotate,一般是每天一次。也是基于定時任務(wù)crontab運行的。
配置文件:
主配置文件的位置在 /etc/logrotate.conf,一般配置在 /etc/logrotate.d/子目錄下。
如系統(tǒng)默認日志配置:
配置文件參數(shù):
更多信息請參考man logrotate幫助文檔
模板是通用的,而配置參數(shù)則根據(jù)你的需求進行調(diào)整,不是所有的參數(shù)都是必要的。
在上面的配置文件中,我們只想要輪詢一個日志文件,size=50M 指定日志文件大小可以增長到 50MB,dateext 指 示讓舊日志文件以創(chuàng)建日期命名。
可自行參考/etc/logrotate.d/目錄下系統(tǒng)默認的文件。
logrotate命令:
具體 logrotate 命令格式如下:
要為某個特定的配置調(diào)用 logrotate:
排障過程中的最佳選擇是使用-d選項以預演方式運行 logrotate。要進行驗證,不用實際輪循任何日志文件, 可以模擬演練日志輪循并顯示其輸出。
正如我們從上面的輸出結(jié)果可以看到的,logrotate 判斷該輪循是不必要的。如果文件的時間小于一天,就會發(fā)生了。
強制輪循即使輪循條件沒有滿足,我們也可以通過使用-f選項來強制 logrotate 輪循日志文件,-v參數(shù)提供了詳細的輸出。
個人項目配置:
項目每天可產(chǎn)生20G左右的日志,顯示不能做每日輪詢,所以額外需要添加定時任務(wù)做每小時,或者每隔多少分鐘。
如果輪詢?nèi)罩井惓箦e如下:
error: skipping “” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.”
需要加 su root root 選項。
同時添加定時任務(wù):
定時任務(wù)說明:
第一條,每隔40分鐘輪詢執(zhí)行一次logrotate任務(wù)。
第二條,每天凌晨4點刪除前一天的日志,原因如下:
由于項目系統(tǒng)產(chǎn)生日志格式的原因,會導致以下情況:
如果昨天的分割到4個后(或者1,2,3),時間到第二天后,沒法轉(zhuǎn)儲遞增,會一直停留在4,沒法刪除,每天會有,久而久之,也會占用磁盤空間。所以需要定時刪除。
設(shè)置完成
開啟定時任務(wù)日志,以便查看定時任務(wù)是否執(zhí)行。后續(xù)可取消。
重啟rsyslog
分享文章:linux切割日志的命令 linux日志切割工具
轉(zhuǎn)載注明:http://jinyejixie.com/article48/hpsoep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、企業(yè)建站、App設(shè)計、營銷型網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)