Nginx 使用 logrotate 進(jìn)行日志滾動

Nginx 日志滾動(官方)

向 Nginx 主進(jìn)程發(fā)送 USR1 信號。

USR1 信號量被 Nginx 自定義了钝侠,為重新打開日志茅糜;當(dāng) kill 命令發(fā)送 USR1時,nginx 會重新打開日志文件片习,并重新創(chuàng)建進(jìn)程。

# nginx 官方提供的日志滾動方式
$ mv access.log access.log.0
$ kill -USR1 `cat master.nginx.pid`
$ sleep 1
$ gzip access.log.0    # do something with access.log.0

logrotate 管理 Nginx 日志

logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

logrotate 是一個日志文件管理工具蹬叭。用于分割日志藕咏,刪除舊的日志,并創(chuàng)建新的日志文件秽五,起到日志滾動的作用孽查。

logrotate 是基于 linux 的 CRON 來運(yùn)行的,其腳本是 /etc/cron.daily/logrotate坦喘。

安裝 logrotate

Linux 一般會默認(rèn)安裝logrotate盲再,它默認(rèn)的配置文件在:

# 配置文件
$ cat /etc/logrotate.conf | grep -v '^#' | grep -v '^$'
weekly
rotate 4
create
dateext
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# logrotate 配置文件目錄,在 /etc/logrotate.conf 中會引用該目錄下的所有文件
$ ls -lt /etc/logrotate.d/

安裝 logrotate:

$ yum install logrotate

配置 logrotate

# nginx logratate 配置文件
$ vi /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
    # 指定轉(zhuǎn)儲周期為每天
    daily
    # 使用當(dāng)期日期作為命名格式
    dateext
    # 如果日志丟失瓣铣,不報錯繼續(xù)滾動下一個日志
    missingok
    # 保留 31 個備份
    rotate 31
    # 不壓縮
    nocompress
    # 整個日志組運(yùn)行一次的腳本
    sharedscripts
    # 轉(zhuǎn)儲以后需要執(zhí)行的命令
    postrotate
        # 重新打開日志文件
        [ ! -f /usr/local/nginx/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/nginx.pid`
    endscript
}

配置文件參數(shù)說明:

參數(shù)名稱 說明
daily 指定轉(zhuǎn)儲周期為每天
weekly 指定轉(zhuǎn)儲周期為每周
monthly 指定轉(zhuǎn)儲周期為每月
dateext 使用當(dāng)期日期作為命名格式答朋,如:access.log-20201121
dateformat .%s 配合dateext使用,緊跟在下一行出現(xiàn)棠笑,定義文件切割后的文件名梦碗,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數(shù)
compress 通過gzip壓縮轉(zhuǎn)儲以后的日志
nocompress 不壓縮
copytruncate 用于還在打開中的日志文件,把當(dāng)前日志備份并截斷
nocopytruncate 備份日志文件但是不截斷
create mode owner group 轉(zhuǎn)儲文件洪规,使用指定的文件模式創(chuàng)建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用時印屁,轉(zhuǎn)儲的日志文件到下一次轉(zhuǎn)儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉(zhuǎn)儲同時壓縮斩例。
errors address 專儲時的錯誤信息發(fā)送到指定的Email 地址
ifempty 即使是空文件也轉(zhuǎn)儲雄人,這個是 logrotate 的缺省選項。
missingok 如果日志丟失念赶,不報錯繼續(xù)滾動下一個日志
notifempty 如果是空文件的話础钠,不轉(zhuǎn)儲
mail address 把轉(zhuǎn)儲的日志文件發(fā)送到指定的E-mail 地址
nomail 轉(zhuǎn)儲時不發(fā)送日志文件
olddir directory 轉(zhuǎn)儲后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個文件系統(tǒng)
noolddir 轉(zhuǎn)儲后的日志文件和當(dāng)前日志文件放在同一個目錄下
sharedscripts 運(yùn)行postrotate腳本晶乔,作用是在所有日志都輪轉(zhuǎn)后統(tǒng)一執(zhí)行一次腳本珍坊。如果沒有配置這個,那么每個日志輪轉(zhuǎn)后都會執(zhí)行一次腳本
prerotate/endscript 在轉(zhuǎn)儲以前需要執(zhí)行的命令可以放入這個對正罢,這兩個關(guān)鍵字必須單獨(dú)成行
postrotate/endscript 在轉(zhuǎn)儲以后需要執(zhí)行的命令可以放入這個對,這兩個關(guān)鍵字必須單獨(dú)成行
rotate count 指定日志文件刪除之前轉(zhuǎn)儲的次數(shù)驻民,0 指沒有備份翻具,5 指保留5 個備份
size log-size 當(dāng)日志文件到達(dá)指定的大小時才轉(zhuǎn)儲,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem)回还,當(dāng)日志文件 >= log-size 的時候就轉(zhuǎn)儲

logrotate 命令參數(shù)

logrotate [OPTION...] <configfile>
-d, --debug :debug模式裆泳,測試配置文件是否有錯誤。
-f, --force :強(qiáng)制轉(zhuǎn)儲文件柠硕。
-m, --mail=command :壓縮日志后工禾,發(fā)送日志到指定郵箱。
-s, --state=statefile :使用指定的狀態(tài)文件蝗柔。
-v, --verbose :顯示轉(zhuǎn)儲過程闻葵。

手動執(zhí)行 logrotate

# '-d' 調(diào)試模式(不切分日志文件),并輸出詳細(xì)處理過程日志
$ logrotate -d -f /etc/logrotate.d/nginx

# '-f' 強(qiáng)制切分日志癣丧,'-v' 輸出詳細(xì)信息
$ logrotate -vf /etc/logrotate.d/nginx
reading config file nginx
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /usr/local/nginx/logs/*.log  forced from command line (100 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/nginx/logs/access.log
  log needs rotating
considering log /usr/local/nginx/logs/error.log
  log needs rotating
rotating log /usr/local/nginx/logs/access.log, log->rotateCount is 100
dateext suffix '-20201121'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
rotating log /usr/local/nginx/logs/error.log, log->rotateCount is 100
dateext suffix '-20201121'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /usr/local/nginx/logs/access.log to /usr/local/nginx/logs/access.log-20201121
renaming /usr/local/nginx/logs/error.log to /usr/local/nginx/logs/error.log-20201121
running postrotate script

# 切分后的日志文件
$ ls -lt /usr/local/nginx/logs
總用量 0
-rw-r--r-- 1 nginx root 0 11月 21 18:58 access.log
-rw-r--r-- 1 nginx root 0 11月 21 18:57 access.log-20201121
-rw-r--r-- 1 nginx root 0 11月 21 18:58 error.log
-rw-r--r-- 1 nginx root 0 11月 21 18:57 error.log-20201121
-rw-r--r-- 1 nginx root 0 11月 21 18:58 images.log
-rw-r--r-- 1 nginx root 0 11月 21 18:57 images.log-20201121

微信公眾號:daodaotest

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末槽畔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胁编,更是在濱河造成了極大的恐慌厢钧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嬉橙,死亡現(xiàn)場離奇詭異早直,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)市框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門霞扬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事祥得⊥梦郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵级及,是天一觀的道長乒疏。 經(jīng)常有香客問我,道長饮焦,這世上最難降的妖魔是什么怕吴? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮县踢,結(jié)果婚禮上转绷,老公的妹妹穿的比我還像新娘。我一直安慰自己硼啤,他們只是感情好议经,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布星著。 她就那樣靜靜地躺著掘宪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪道宅。 梳的紋絲不亂的頭發(fā)上嗓袱,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天籍救,我揣著相機(jī)與錄音,去河邊找鬼渠抹。 笑死蝙昙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梧却。 我是一名探鬼主播奇颠,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼篮幢!你這毒婦竟也來了大刊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤三椿,失蹤者是張志新(化名)和其女友劉穎缺菌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搜锰,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伴郁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛋叼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焊傅。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡剂陡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狐胎,到底是詐尸還是另有隱情鸭栖,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布握巢,位于F島的核電站晕鹊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏暴浦。R本人自食惡果不足惜溅话,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歌焦。 院中可真熱鬧飞几,春花似錦、人聲如沸独撇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽券勺。三九已至绪钥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間关炼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工匣吊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儒拂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓色鸳,卻偏偏與公主長得像社痛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子命雀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容