如何在 MongoDB 3.4 上設置日誌輪換

在本文中,我將介紹 MongoDB 日誌輪換。 日誌是文本文件,可以在我們的程序運行時包含信息、警告或錯誤記錄。 我們需要執行日誌輪換,因為這些文件可能變得太大並佔用太多磁盤空間。 此外,打開和分析大文件需要更多時間。 舊的日誌文件也可以壓縮以減小它們的大小。

我將使用在 VMware Workstation 中創建的 CentOS 7 虛擬機,具有 1 個 vCPU、1 GB 的 RAM 和 20 GB 的磁盤空間和 MongoDB 3.4.

默認情況下,MongoDB 日誌位於 /var/log/mongodb。 您可以通過使用 –logpath 啟動 MongoDB 服務來更改日誌文件的位置

# mongod -v --logpath /var/log/mongodb/server1.log

執行日誌輪換的最簡單方法是手動執行

# kill -SIGUSR1 $(cat /var/lib/mongo/mongod.lock)

並刪除日誌

# rm -rf /var/log/mongodb/mongod.log.*

或壓縮它們以釋放一些磁盤空間

# tar -cf /var/log/mongodb/mongod.log.*

SIGUSR1 信號被發送到 mongod 進程並執行日誌輪換。
另一種進行日誌輪換的方法是通過在命令行中輸入“mongo”來進入 mongo 控制台。 然後在數據庫控制台中執行

    > use admin
    > db.runCommand( { logRotate : 1 } )

輸出必須是

    { "ok" : 1 }

您還可以通過使用以下命令啟動 mongo 來指定 logRotate 命令的行為 –logRotate 鑰匙。 您應該為此密鑰重命名或重新打開指定選項。 默認情況下使用選項重命名。 重命名選項只是重命名日誌文件。 重新打開選項關閉並重新打開文件。 此選項必須與 –logappend 鍵和 對數旋轉 實用程序,以避免數據丟失。

對於自動旋轉,我們可以使用 對數旋轉 公用事業。
首先創建文件

# vi /etc/logrotate.d/mongodb

並插入那裡

/var/log/mongodb/mongodb.log {
    daily
    rotate 30
    compress
    missingok
    sharedscripts
    postrotate
        	kill -SIGUSR1 $(cat /var/lib/mongo/mongod.lock)
    endscript
}

簡單介紹一下這個配置文件。 “每日”表示每天輪換日誌,“輪換 30” – 日誌將保留 30 天,然後通過電子郵件發送或刪除,“壓縮” – 舊日誌使用 gzip 壓縮,“missingok” – 跳過任何錯誤缺少任何日誌文件,’sharedscript’s – 運行腳本一次的腳本,’postrotate’ 和 ‘endscript’ – 在日誌輪換後執行腳本。

也可以通過運行 mongo instante 將日誌發送到主機系統日誌文件 –系統日誌. 這個選項 不支持 在 Windows 主機上。