rsyslog 配置

安裝 rsyslog 和 logroate 服務(wù)

yum install rsyslog
yum install logrotate

rsyslog配置文件

  #rsyslog v3 config file   [兼容版本號(hào)]

  #### MODULES ####    加載模塊
  $ModLoad imuxsock.so             # 本地系統(tǒng)日志 (e.g. via logger command) 
  $ModLoad imklog.so               # provides kernel logging support (previously done by rklogd)

  # 允許514端口接收使用UDP協(xié)議轉(zhuǎn)發(fā)過來的日志
  #$ModLoad imudp.so
  #$UDPServerRun 514
  # 允許514端口接收使用TCP協(xié)議轉(zhuǎn)發(fā)過來的日志
  #$ModLoad imtcp.so
  #$InputTCPServerRun 514

  #### GLOBAL DIRECTIVES ####
  # 定義日志格式默認(rèn)模板  
  $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat  
  # File syncing capability is disabled by default. This feature is usually not required,
  # not useful and an extreme performance hit
  #$ActionFileEnableSync on

  #### RULES ####
  # 關(guān)于內(nèi)核的所有日志都放到/dev/console(控制臺(tái))
  #kern.*                                                 /dev/console
  # 記錄所有日志類型的info級(jí)別以及大于info級(jí)別的信息到 /var/log/messages守问,但是mail郵件信息,authpriv驗(yàn)證方面的信息和cron時(shí)間任務(wù)相關(guān)的信息除外
  *.info;mail.none;authpriv.none;cron.none                /var/log/messages  
  # authpriv驗(yàn)證相關(guān)的所有信息存放在/var/log/secure
  authpriv.*                                              /var/log/secure  
  # 郵件的所有信息存放在/var/log/maillog; 這里有一個(gè)-符號(hào), 表示是使用異步的方式記錄, 因?yàn)槿罩疽话銜?huì)比較大
  mail.*                                                  -/var/log/maillog  
  # 計(jì)劃任務(wù)有關(guān)的信息存放在/var/log/cron
  cron.*                                                  /var/log/cron  
  # 記錄所有的大于等于emerg級(jí)別信息, 以wall方式發(fā)送給每個(gè)登錄到系統(tǒng)的人(* 代表所有在線用戶 )
  *.emerg                                                 * 
  # 記錄uucp,news.crit等存放在/var/log/spooler
  uucp,news.crit                                          /var/log/spooler  
  # Save boot messages also to boot.log     啟動(dòng)的相關(guān)信息
  local7.*                                                /var/log/boot.log

  #  轉(zhuǎn)發(fā)規(guī)則
  # remote host is: name/ip:port,  port optional (e.g. 192.168.0.1:514)
  *.*                                                     @@remote-host:514                    
  # @@表示通過tcp協(xié)議發(fā)送    @表示通過udp進(jìn)行轉(zhuǎn)發(fā)

日志級(jí)別

  • debug 有調(diào)式信息的坑资,日志信息最多
  • info 一般信息的日志耗帕,最常用
  • notice 最具有重要性的普通條件的信息
  • warning 警告級(jí)別
  • err 錯(cuò)誤級(jí)別,阻止某個(gè)功能或者模塊不能正常工作的信息
  • crit 嚴(yán)重級(jí)別袱贮,阻止整個(gè)系統(tǒng)或者整個(gè)軟件不能正常工作的信息
  • alert 需要立刻修改的信息
  • emerg 內(nèi)核崩潰等嚴(yán)重信息
  • none 什么都不記錄
    從上到下仿便,級(jí)別從低到高,記錄的信息越來越少

連接符號(hào)

  • .xxx :表示大于等于xxx級(jí)別的信息
  • .=xxx:表示等于xxx級(jí)別的信息
  • .!xxx:表示在xxx之外的等級(jí)的信息

Actions

  1. 記錄到普通文件或設(shè)備文件:
    . /var/log/file.log # 絕對(duì)路徑
    . /dev/pts/0
    logger 命令用于產(chǎn)生日志: logger -p local3.info 'KadeFor is testing the rsyslog and logger'

  2. 轉(zhuǎn)發(fā)到遠(yuǎn)程::
    . @192.168.0.1 # 使用UDP協(xié)議轉(zhuǎn)發(fā)到192.168.0.1的514(默認(rèn))端口
    . @@192.168.0.1:10514 # 使用TCP協(xié)議轉(zhuǎn)發(fā)到192.168.0.1的10514(默認(rèn))端口

  3. 發(fā)送給用戶(需要在線才能收到)::
    . root
    . root,kadefor,up01 # 使用,號(hào)分隔多個(gè)用戶
    . * # *號(hào)表示所有在線用戶

  4. 忽略,丟棄::
    local3.* ~ # 忽略所有l(wèi)ocal3類型的所有級(jí)別的日志

  5. 執(zhí)行腳本::
    local3.* ^/tmp/a.sh # ^號(hào)后跟可執(zhí)行腳本或程序的絕對(duì)路徑
    # 日志內(nèi)容可以作為腳本的第一個(gè)參數(shù). 可用來觸發(fā)報(bào)警
    注意: 日志記錄的順序有先后關(guān)系!

實(shí)例: 過濾特定的日志到文件

# 過濾日志, 由:號(hào)開頭
:msg, contains, “error” /var/log/error.log
:msg, contains, “error” ~                # 忽略包含error的日志
:msg, contains, “user nagios”   ~
:msg, contains, “user kadefor”   ~
:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~
local3.*    ~
&   ~                                     # 忽略所有的日志. 

實(shí)例: 使用模板來定義日志格式

定義默認(rèn)的日志格式:

$template myFormat,”%rawmsg%\n”  
$ActionFileDefaultTemplate myFormat  

如果不要$ActionFileDefaultTemplate myFormat這一行, 就需要像這樣來使用模板:
在日志文件后添加模板名, 并用;號(hào)分隔

$template myFormat,”%rawmsg%\n”  
authpriv.*      /var/log/secure;myFormat  
mail.*          /var/log/maillog;myFormat  
cron.*          /var/log/cron;myFormat  
*.emerg                                       *  
uucp,news.crit  /var/log/spooler;myFormat  
local7.*        /var/log/boot.log;myFormat

實(shí)例: remote log 遠(yuǎn)程發(fā)送與接收:

配置服務(wù)端(接收)

$ModLoad imtcp.so                  # 使用tcp方式
$InputTCPMaxSessions 500           # tcp接收連接數(shù)為500個(gè)
$InputTCPServerRun 514             # tcp接收信息的端口

# 定義一個(gè)名為logformat模板, 為信息加上日志時(shí)間
$template logformat, "%TIMESTAMP:::date-mysql% %FROMHOST-IP%%msg%\n"
# 定義日志文件的名稱攒巍,按照年月日
$template DynFile, "/var/log/tlog%$year%%$month%%$day%.log"
# 把rawmsg(也可以使用msg)日志中包含sdns_log標(biāo)志的信息寫到DynFile定義的日志文件里
:rawmsg, contains, "sdns_log" ?DynFile;logformat
# 這個(gè)表示丟棄包含sdns_log標(biāo)志的信息, 一般都加上它, 以免多個(gè)日志文件記錄重復(fù)的日志
:rawmsg, contains, "sdns_log"  ~ 

配置客戶端(發(fā)送)
# 把包含sdns_log的信息通過tcp發(fā)到192.168.1.2 @@表示tcp @表示udp
:rawmsg, contains, “sdns_log” @@192.168.1.2 # 默認(rèn)514端口
# 這個(gè)表示丟棄包含sdns_log標(biāo)志的信息,防止這個(gè)信息寫到本機(jī)的/var/log/message
:rawmsg, contains, “sdns_log” ~
測(cè)試:在客戶端上執(zhí)行 logger -p user.info "sdns_log 34334" 在服務(wù)端的/var/log/目錄里是否有tlog*日志產(chǎn)生

如果要把不同服務(wù)器發(fā)送過來的日志保存到不同的文件, 可以這樣操作

:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log
:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log
:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log
:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log

屬性替代

  1. 屬性替代
    Rsyslog 預(yù)定義了一些屬性嗽仪,來代表消息中的信息,我們可以在定義輸出格式柒莉、動(dòng)態(tài)文件名的時(shí)候使用到這些屬性闻坚。這里面比較重要的屬性比如:msg(消息體)、hostname兢孝、pri(消息等級(jí)和類別)窿凤、time(時(shí)間有關(guān)),屬性的名稱中以開頭的是從本地系統(tǒng)獲得的變量跨蟹、不帶是從消息中獲得變量雳殊。
    屬性替代的語(yǔ)法格式:
    %propname:fromChar:toChar:options:fieldname%
    屬性替換的功能很強(qiáng)大,你可以使用起始字符獲取自己所需的字段窗轩,也可以使用正則表達(dá)式夯秃,也可以使用分隔符。舉幾個(gè)例子:為了兼容一個(gè)rfc協(xié)議品姓,rsyslog規(guī)定如果用戶輸入的msg不是以空格開頭寝并,rsyslog會(huì)自動(dòng)補(bǔ)充一個(gè)空格箫措,因此如果你希望輸出的時(shí)候去掉這個(gè)空格腹备,就可以使用:
    %msg:2:$%
    選取msg變量中,起始位置為2斤蔓,終止位置為結(jié)尾我們經(jīng)常需要根據(jù)空格來分析字符串植酥,F(xiàn)表示使用字符分割,32是空格的ascii碼。 按照空格分隔友驮,取第三個(gè)子串漂羊,例:
    %msg:F,32:3%

  2. 模板
    模板的功能是定義輸出格式,或者定義omfile模塊的動(dòng)態(tài)路徑卸留、動(dòng)態(tài)文件走越。需要使用上面提到的屬性替換。
    模板定義的形式有四種耻瑟,適用于不同的輸出模塊旨指,一般簡(jiǎn)單的格式,可以使用string的形式喳整,復(fù)雜的格式谆构,建議使用list的形式,使用list的形式框都,可以使用一些額外的屬性字段(property statement)搬素,例如:position.fromposition.end魏保。
    如果不指定輸出模板熬尺,rsyslog會(huì)默認(rèn)使用 RSYSLOG_DEFAULT
    如果你只想輸出msg谓罗,可以定義模板
    template t_msg, “%msg\n%” 如果想按日期保存輸出猪杭,需要使用動(dòng)態(tài)路徑⊥滓拢可以定義模板template f_debug, “/data0/logs/%year%-%month%-%$day%/debug.log”

  3. Ruleset
    Ruleset實(shí)現(xiàn)的是多實(shí)例的功能皂吮,可以針對(duì)syslog的來源使用不同的過濾規(guī)則。需要注意的是税手,在配置文件中需要先定義ruleset蜂筹,才可以使用。比較典型的一個(gè)例子芦倒,針對(duì)不同的端口使用不同的過濾規(guī)則艺挪。

     $Ruleset tcp1999
     $RulesetCreateMainQueue on
     Local3.*      @@10.0.0.44:1999
     $Ruleset tcp2000
     $RulesetCreateMainQueue on
     Local4.*      @@10.0.0.44:2000
    

在定義好ruleset后,各個(gè)輸出模塊就可以指定自己使用的ruleset了兵扬,具體如何指定麻裳,可以查看輸出模塊的手冊(cè),一般會(huì)有一個(gè)ruleset的參數(shù)器钟,用來實(shí)現(xiàn)這個(gè)功能津坑。

  1. Filter模塊
    Rsyslog可以使用syslog標(biāo)準(zhǔn)的過濾規(guī)則,同時(shí)自己添加了一些擴(kuò)展傲霸。比如可以在輸出中指定rsyslog自己的處理方式疆瑰,可以指定輸出template,方法是在規(guī)則后面添加template的名字眉反,用分號(hào)隔開。
    例如我們可以編寫一個(gè)規(guī)則
    Local3.* -/data0/logs/local3.log;t_msg
    #在這個(gè)輸出中使用t_msg的模板
    Local4.* -?f_local3_test;t_msg
    問號(hào)表示要使用模板定義的動(dòng)態(tài)路徑.
    除了syslog標(biāo)準(zhǔn)的規(guī)則穆役,rsyslog的作者還自己開發(fā)了一個(gè)叫做rainerscript的腳本語(yǔ)言寸五,來定義更復(fù)雜的過濾過則,rainerscript 可以對(duì)屬性進(jìn)行 startwith耿币、contains梳杏、%(取余)等過濾規(guī)則,例如
    If pri-txt == local3.* andmsg contains “abc” then{ #pri為local3淹接,且在消息中包含子串‘a(chǎn)bc’
    . -/data0/logs/local3.log;t_msg
    }
    還有第三種方式是使用屬性的表示方式秘狞,例如
    :msg, regex, "^ [g-z]" /root/rsyslog_worker_dir/2000.log
    # 以字母g到z開頭的消息,注意msg開頭有個(gè)空格
  2. 隊(duì)列
    隊(duì)列是rsyslog中比較重要的一個(gè)部分蹈集,作為使用者烁试,我們需要了解的是隊(duì)列的種類:主隊(duì)列工作隊(duì)列。從輸入模塊接收的消息會(huì)進(jìn)入主隊(duì)列拢肆,主隊(duì)列中的消息减响,經(jīng)過過濾模塊,會(huì)進(jìn)入到相應(yīng)的工作隊(duì)列郭怪;隊(duì)列的四種工作模式:direct mode支示、disk mode、FixedArray mode 和 LinkedList mode鄙才,前兩種是磁盤隊(duì)列颂鸿,更可靠,但是性能也較差攒庵,后兩種是內(nèi)存隊(duì)列嘴纺,區(qū)別是前者是預(yù)分配隊(duì)列長(zhǎng)度,后者是動(dòng)態(tài)分配浓冒,如果你的系統(tǒng)日志流量比較平穩(wěn)栽渴,可以使用預(yù)分配隊(duì)列,如果日志屬于突發(fā)型稳懒,可以使用動(dòng)態(tài)隊(duì)列闲擦。此外,內(nèi)存隊(duì)列還可以通過指定一個(gè)queuename來添加DA模式场梆,DA模式主要是為了防止意外情況(進(jìn)程關(guān)閉墅冷、server端宕機(jī))下,內(nèi)存隊(duì)列可以不丟失或油。
    通過查看rsyslog的系統(tǒng)命令寞忿,可以知道rsyslog對(duì)隊(duì)列進(jìn)行大量的可配參數(shù),來定義隊(duì)列的行為装哆」藜梗可以根據(jù)需要來進(jìn)行優(yōu)化定嗓。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜕琴,一起剝皮案震驚了整個(gè)濱河市萍桌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凌简,老刑警劉巖上炎,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異雏搂,居然都是意外死亡藕施,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門凸郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裳食,“玉大人,你說我怎么就攤上這事芙沥』寤觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵而昨,是天一觀的道長(zhǎng)救氯。 經(jīng)常有香客問我,道長(zhǎng)歌憨,這世上最難降的妖魔是什么着憨? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮务嫡,結(jié)果婚禮上甲抖,老公的妹妹穿的比我還像新娘。我一直安慰自己心铃,他們只是感情好惧眠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著于个,像睡著了一般氛魁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厅篓,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天秀存,我揣著相機(jī)與錄音,去河邊找鬼羽氮。 笑死或链,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的档押。 我是一名探鬼主播澳盐,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼祈纯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了叼耙?” 一聲冷哼從身側(cè)響起腕窥,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筛婉,沒想到半個(gè)月后簇爆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爽撒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年入蛆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硕勿。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哨毁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出源武,到底是詐尸還是另有隱情扼褪,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布软能,位于F島的核電站迎捺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏查排。R本人自食惡果不足惜凳枝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跋核。 院中可真熱鬧岖瑰,春花似錦、人聲如沸砂代。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刻伊。三九已至露戒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捶箱,已是汗流浹背智什。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丁屎,地道東北人荠锭。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晨川,于是被迫代替她去往敵國(guó)和親证九。 傳聞我的和親對(duì)象是個(gè)殘疾皇子删豺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • ryslog工作流,輸入-處理-輸出愧怜。linux系統(tǒng)自帶的日志收集工具呀页,依賴守護(hù)進(jìn)程。在linux系統(tǒng)中叫搁,/var...
    王歪歪102幾閱讀 3,053評(píng)論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)赔桌,會(huì)觸發(fā)此異常供炎。 O...
    我想起個(gè)好名字閱讀 5,317評(píng)論 0 9
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,911評(píng)論 2 11
  • 技術(shù)交流QQ群:1027579432渴逻,歡迎你的加入! 一音诫、常見的日志 日志是一個(gè)系統(tǒng)管理員惨奕,一個(gè)運(yùn)維人員,甚至是開...
    CurryCoder閱讀 1,544評(píng)論 0 5
  • 折騰一上午就為讓寶寶體驗(yàn)冰雪世界竭钝。 期待了一星期梨撞,本來周六就要完成心愿的,由于寶寶學(xué)習(xí)要緊香罐,不錯(cuò)過成為“播音主持”...
    明天陽(yáng)光閱讀 73評(píng)論 0 1