rsyslog和logrotate的使用

日志輪轉(zhuǎn)logrotate的使用

參考文檔: https://blog.huoding.com/2013/04/21/246

logrotate是一個(gè)linux系統(tǒng)日志的管理工具娩脾」纷迹可以對(duì)單個(gè)日志文件或者某個(gè)目錄下的文件按時(shí)間/大小進(jìn)行切割磅废,壓縮操作兽埃;指定日志保存數(shù)量;還可以在切割之后運(yùn)行自定義命令。

logrotate是基于crontab運(yùn)行的,所以這個(gè)時(shí)間點(diǎn)是由crontab控制的荐操,具體可以查詢crontab的配置文件/etc/anacrontab。系統(tǒng)會(huì)按照計(jì)劃的頻率運(yùn)行l(wèi)ogrotate珍策,通常是每天托启。在大多數(shù)的Linux發(fā)行版本上,計(jì)劃每天運(yùn)行的腳本位于 /etc/cron.daily/logrotate攘宙。

cron定時(shí)任務(wù)每天運(yùn)行的logrotate腳本:

# cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

cron配置文件:

# cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

可修改此配置文件重新定義每天定時(shí)任務(wù)執(zhí)行的時(shí)間

使用logrotate工具實(shí)現(xiàn)nginx日志切割

nginx運(yùn)行日志默認(rèn)保存在nginx安裝目錄下的 /usr/local/nginx/logs 文件夾, 包含access.log和error.log兩個(gè)文件.

  • logrotate的配置文件
# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.8.6
/usr/share/doc/logrotate-3.8.6/CHANGES
/usr/share/doc/logrotate-3.8.6/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status

logrotate的配置文件是 /etc/logrotate.conf, 這個(gè)文件用來(lái)定義全局默認(rèn)參數(shù)
/etc/logrotate.d/ 是用于存儲(chǔ)各種自定義應(yīng)用的配置文件的目錄屯耸。該目錄里的所有文件都會(huì)被主動(dòng)的讀入到 /etc/logrotate.conf中執(zhí)行。該目錄下的應(yīng)用配置文件繼承所有/etc/logrotate.conf 的默認(rèn)參數(shù)

  • 創(chuàng)建nginx日志分割文件(路徑: /etc/logrotate.d/nginx )
# cd /etc/logrotate.d/
# cat nginx
/usr/local/nginx/logs/access.log /usr/local/nginx/logs/error.log {
daily
minsize 10M
rotate 15
dateext
create
compress
delaycompress
sharedscripts
postrotate
    /bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2> /dev/null || true
endscript
}

minsize 10M 文件必須大于10M蹭劈,且周期到了疗绣,才會(huì)輪轉(zhuǎn)

daily: 日志文件分割頻度∑倘停可選值為 daily持痰,monthly,weekly祟蚀,yearly
rotate 7: 一次將存儲(chǔ)7個(gè)歸檔日志工窍。對(duì)于第8個(gè)歸檔,時(shí)間最久的歸檔將被刪除前酿。
missingok: 在日志輪循期間患雏,任何錯(cuò)誤將被忽略,例如“文件無(wú)法找到”之類的錯(cuò)誤罢维。
dateext 使用日期作為命名格式
compress: 在輪循任務(wù)完成后淹仑,已輪循的歸檔將使用gzip進(jìn)行壓縮。
nocompress: 如果你不希望對(duì)日志文件進(jìn)行壓縮肺孵,設(shè)置這個(gè)參數(shù)即可
delaycompress: 總是與compress選項(xiàng)一起用匀借,delaycompress選項(xiàng)指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行平窘。這在你或任何軟件仍然需要讀取最新歸檔時(shí)很有用吓肋。
notifempty: 如果日志文件為空,輪循不會(huì)進(jìn)行瑰艘。
sharedscripts 表示postrotate腳本在壓縮了日志之后只執(zhí)行一次
create 644 www root: 以指定的權(quán)限創(chuàng)建全新的日志文件是鬼,同時(shí)logrotate也會(huì)重命名原始日志文件。
postrotate/endscript: 最通常的作用是讓?xiě)?yīng)用重啟紫新,以便切換到新的日志文件, 在所有其它指令完成后均蜜,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下芒率,nginx 進(jìn)程將立即再次讀取其配置并繼續(xù)運(yùn)行囤耳。

如何告訴應(yīng)用程序重新打開(kāi)日志文件?
以Nginx為例,是通過(guò)postrotate指令發(fā)送USR1信號(hào)來(lái)通知Nginx重新打開(kāi)日志文件的偶芍。但是其他的應(yīng)用程序不一定遵循這樣的約定充择,比如說(shuō)MySQL是通過(guò)flush-logs來(lái)重新打開(kāi)日志文件的。更有甚者腋寨,有些應(yīng)用程序就壓根沒(méi)有提供類似的方法聪铺,此時(shí)如果想重新打開(kāi)日志文件,就必須重啟服務(wù)萄窜,但為了高可用性铃剔,這往往不能接受。還好Logrotate提供了一個(gè)名為copytruncate的指令查刻,此方法采用的是先拷貝再清空的方式键兜,整個(gè)過(guò)程中日志文件的操作句柄沒(méi)有發(fā)生改變,所以不需要通知應(yīng)用程序重新打開(kāi)日志文件穗泵,但是需要注意的是普气,在拷貝和清空之間有一個(gè)時(shí)間差,所以可能會(huì)丟失部分日志數(shù)據(jù)佃延。

kill命令以及USR1信號(hào)解釋
USR1亦通常被用來(lái)告知應(yīng)用程序重載配置文件现诀;例如夷磕,向Apache HTTP服務(wù)器發(fā)送一個(gè)USR1信號(hào)將導(dǎo)致以下步驟的發(fā)生:停止接受新的連接,等待當(dāng)前連接停止仔沿,重新載入配置文件坐桩,重新打開(kāi)日志文件,重啟服務(wù)器封锉,從而實(shí)現(xiàn)相對(duì)平滑的不關(guān)機(jī)的更改绵跷。
kill -HUP pid 或者 killall -HUP pName:如果想要更改配置而不需停止并重新啟動(dòng)服務(wù)。在對(duì)配置文件作必要的更改后成福,發(fā)出該命令以動(dòng)態(tài)更新服務(wù)配置碾局。
根據(jù)約定,當(dāng)你發(fā)送一個(gè)掛起信號(hào)(信號(hào)1或HUP)時(shí)奴艾,大多數(shù)服務(wù)器進(jìn)程(所有常用的進(jìn)程)都會(huì)進(jìn)行復(fù)位操作并重新加載它們的配置文件净当。

日志服務(wù)rsyslog

參考文檔: https://blog.csdn.net/paopaohll/article/details/84388313

通過(guò)logger命令記錄日志:
參考文檔: https://www.cnblogs.com/itsad/p/8043517.html

  1. 配置rsyslog服務(wù),并重啟服務(wù)
    在第一行加入local5.none,使得設(shè)備local5的日志不記錄在messages文件里
    將設(shè)備local5的所有級(jí)別的信息都記錄在/var/log/yw.log文件里(修改yw.log文件權(quán)限)
*.info;mail.none;authpriv.none;cron.none;local1.none;local5.none /var/log/message

local5.*                                   /var/log/yw.log
  1. 通過(guò)logger命令輸出
$ logger -t  mysqlbak  -p local5.info  "info, xxxxxx"
$ logger -t  mysqlbak  -p local5.error  "error, xxxxxx"  
  1. 在logrotate下添加對(duì)應(yīng)rsyslog服務(wù)的配置(可選)
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/yw.log      //添加的內(nèi)容
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末握侧,一起剝皮案震驚了整個(gè)濱河市蚯瞧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌品擎,老刑警劉巖埋合,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異萄传,居然都是意外死亡甚颂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)秀菱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)振诬,“玉大人,你說(shuō)我怎么就攤上這事衍菱「厦矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵脊串,是天一觀的道長(zhǎng)辫呻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)琼锋,這世上最難降的妖魔是什么放闺? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮缕坎,結(jié)果婚禮上怖侦,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好匾寝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布搬葬。 她就那樣靜靜地躺著,像睡著了一般旗吁。 火紅的嫁衣襯著肌膚如雪踩萎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天很钓,我揣著相機(jī)與錄音,去河邊找鬼董栽。 笑死码倦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锭碳。 我是一名探鬼主播袁稽,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擒抛!你這毒婦竟也來(lái)了推汽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤歧沪,失蹤者是張志新(化名)和其女友劉穎歹撒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诊胞,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暖夭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撵孤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迈着。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邪码,靈堂內(nèi)的尸體忽然破棺而出裕菠,到底是詐尸還是另有隱情,我是刑警寧澤闭专,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布奴潘,位于F島的核電站,受9級(jí)特大地震影響喻圃,放射性物質(zhì)發(fā)生泄漏萤彩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一斧拍、第九天 我趴在偏房一處隱蔽的房頂上張望雀扶。 院中可真熱鬧,春花似錦、人聲如沸愚墓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浪册。三九已至扫腺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間村象,已是汗流浹背笆环。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厚者,地道東北人躁劣。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像库菲,于是被迫代替她去往敵國(guó)和親账忘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 前言 在Linux環(huán)境中能夠幫助我們分析問(wèn)題蛛絲馬跡的有效辦法之一便是日志熙宇,常見(jiàn)的如操作系統(tǒng)syslog日志/va...
    王奧OX閱讀 2,867評(píng)論 0 2
  • 1. Nginx用戶認(rèn)證 我一直很懷疑為什么nginx用戶認(rèn)證要安裝Apache鳖擒,我仔細(xì)想了想所有的步驟,只有生成...
    石樂(lè)志的LK閱讀 1,254評(píng)論 0 0
  • logrotate旨在簡(jiǎn)化生成大量日志文件的系統(tǒng)的管理烫止。它允許日志文件的自動(dòng)輪換蒋荚、壓縮、刪除和郵件烈拒。每個(gè)日志文件可...
    云揚(yáng)_fb42閱讀 2,121評(píng)論 0 3
  • 彩燈不顧是良宵圆裕,只教離人漸瘦腰。 隔岸且觀煙渺渺荆几,殊途卻望路迢迢吓妆。 漂零肆意隨流水,落寞長(zhǎng)歌止渭橋吨铸。 愿納愁情祈爾...
    南國(guó)小生閱讀 246評(píng)論 0 5
  • 突然很想你诞吱。 檸檬在手機(jī)上一個(gè)字一個(gè)字地敲出這句話舟奠,再一個(gè)字一個(gè)字地刪除。 隔時(shí)已遠(yuǎn)房维,很多記憶已經(jīng)模糊不清沼瘫,鈍鈍的...
    夏涼薄荷閱讀 217評(píng)論 0 3