前言
其實所謂自動分割MongoDB日志文件,就是指Rotate MongoDB log files,即讓MongoDB每天(或每個星期,可自定義控制)生成一個日志文件,而不是將MongoDB所有的運行日志都放置在一個文件中,這樣每個日志文件都相對較小,定位問題也更容易。
實現自動分割MongoDB日志的方法可以參考:https://docs.mongodb.com/manual/tutorial/rotate-log-files/
現在以一個MongoDB實例為例,可以寫一個腳本來實現自動分割MongoDB日志
1、配置MongoDB實例啟動參數
security: keyFile: /usr/local/mongodb/authentication/keyFile sharding: clusterRole: shardsvr replication: replSetName: rs3 net: port: 27023 storage: dbPath: /data/db_delay_rs3 systemLog: path: /data/log_delay_rs3/mongodb.log destination: file logAppend: true logRotate: rename processManagement: fork: true
配置MongoDB系統日志保存路徑,並配置logRotate
參數為rename
2、編寫自動分割MongoDB日志腳本
#!/bin/bash #Rotate the MongoDB logs to prevent a single logfile from consuming too much disk space. app=mongod mongodPath=/usr/local/mongodb/bin/ pidArray=$(pidof $mongodPath/$app) for pid in $pidArray;do if [ $pid ] then kill -SIGUSR1 $pid fi done exit
:wq
保存,並命名為logRotate.sh
,保存到目錄/data/logRotate/
3、設置Linux定時任務
vi /etc/crontab
在打開的文件底部添加如下內容
59 23 * * * root /data/logRotate/logRotate.sh
:wq
保存,表示配置一個定時任務,定時每天23:59以root身份執行腳本/data/logRotate/logRotate.sh
,實現定時自動分割MongoDB日志
至此,就實現了自動分割MongoDB日志,MongoDB每天都會生成一個新的日志文件,日志文件的命名帶有標識文件日期的時間戳。
如下所示:
mongodb.log mongodb.log.2016-12-08T15-59-01 mongodb.log.2016-12-13T15-59-01 mongodb.log.2016-12-06T07-14-10 mongodb.log.2016-12-09T15-59-01 mongodb.log.2016-12-14T15-59-01 mongodb.log.2016-12-06T15-59-01 mongodb.log.2016-12-10T15-59-01 mongodb.log.2016-12-15T15-59-01 mongodb.log.2016-12-07T01-54-05 mongodb.log.2016-12-11T15-59-01 mongodb.log.2016-12-16T15-59-01 mongodb.log.2016-12-07T15-59-01 mongodb.log.2016-12-12T15-59-01
總結
以上就是關於MongoDB運行日志自動分割的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。