Unix 系統中的日誌檔存放在 /var/log/ 中,可供我們查錯及觀察。日誌檔最大的問題是會不斷的長大。
但是其他的日誌檔如果不定時去清空,也許就會長大到非常的可怕的地步,尤其是mongo,裡面都是記一堆廢物。
手動清空
如果要將記錄內容清空,移除再建立是一個方法,但不是很好的方法,可以採用下面這個指令
例如:
或是
就可以輕鬆的將記錄檔清空。
因為架設的 mongodb伺服器的log不斷長大,已經塞爆我的空間,於是採用 logrotate來處理我的記錄檔。
使用 logrotate來定時壓縮及分檔備份
一、安裝(內建已安裝)
系統 centos7
二、全域設定(保持不動)
logrotate的設定檔為 /etc/logrotate.conf,這裡設定的是全域參數,可以保留不動。
# 執行週期
weekly
# 保存幾份資料,4代表會有4+1個
rotate 4
# 壓縮完是否會建一個新的空檔?
create
# 備份檔附檔名加註日期
dateext
# 是否用gz壓縮,預設無
#compress
# 下面是預設的不必動
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
個別的設定檔放在 /etc/logrotate.d/
mongodb 的log檔在 /var/log/mongodb/mongod.log
建立一個新的設定檔
# touch mongo
# vi mongo
修改內容如下
/var/log/mongodb/mongod.log {
missingok
notifempty
copytruncate
rotate 10
compress
size 300M
daily
create 0600 root root
}
missingok 如果找不到 log 檔也沒關係
notifempty 如果檔案為0就略過
copytruncate 先複製 log 檔的內容再清空,因為wildfly會寫到原檔,這個參數一定要設定。
rotate 4 建立4個備份,注意這不算入原本那個
compress 壓縮成gz
size 300M 至少要300m才建立備份
三、測試
<正確的話沒任何的回應>
或是
<正確的話沒任何的回應>
總計 8.0G
-rw-r-----. 1 mongod mongod 7.9G 12月 27 14:37 mongod.log
壓縮後,大概花5分鐘
總計 504M
-rw-r-----. 1 mongod mongod 1.2M 12月 27 14:47 mongod.log
-rw-r-----. 1 mongod mongod 502M 12月 27 14:38 mongod.log.1.gz
果然都是廢物
四、加入排程
不必加入排程,因為yum 裝完後就已經有在 /etc/cron.daily/ 中存在
除非你要改成自己的排程:
參考連結
[1] [FREEBSD] 使用 logrotate 來管理及備份日誌檔@新精讚
[2] https://ihower.tw/blog/archives/3565
[3] https://www.jianshu.com/p/ea7c2363639c 這裡有參數的說明
[4] [CENTOS7] 使用 logrotate 來整理wildfly日誌檔