1. 程式人生 > >rsyslog研究——第一章 rsyslog整體架構

rsyslog研究——第一章 rsyslog整體架構

最近因為工作需要研究了rsyslog,主要是把官網的文件看了一遍,因為學習的過程中,發現中文資料很少,所以研究的差不多以後,決定拿出來分享一下。

rsyslog官網的文件還是挺爛的(在我看完後,官網有了一次改版,可能好一些了),尤其是配置檔案部分,每個版本都有改動,但是官網只有最新版本的引數介紹,好幾次我按照文件的引數寫配置檔案,或者報錯,或者引數不起作用,因此大家使用哪個版本的rsyslog,最好是下個該版本的原始碼,以供核查引數是否準確。

本文的結構,來自我的內部分享。

使用的rsyslog版本為:7.2.5

第一章 rsyslog整體架構

我主要使用rsyslog來保證日誌的可靠性傳輸,日誌中心宕機,client端可以本地儲存日誌,因此rsyslog與資料庫結合方面的知識在文章中沒有涉及。

10231124-47833e3a70d24191aeb6435264c4392f.png 

Rsyslog架構,這是rsyslog官網上的一張圖,用來介紹rsyslog的架構,rsyslog的訊息流是從輸入模組->預處理模組->主佇列->過濾模組->執行佇列->輸出模組。

在這個流程圖中,輸入、輸出、過濾三個部分稱為module,輸入模組有imklg、imsock、imfile。輸出模組有omudp、omtcp、omfile、omprog、ommysql、omruleset(後兩者我沒有研究,本文不會涉及)。過濾模組研究不多,只會提到mmnormalize。

預處理模組主要解決各種syslog協議實現間的差異,舉例說明如果日誌系統client端使用rsyslog、server端使用syslog-ng,如果自己不做特殊處理syslog-ng是無法識別的。但是反過來,rsyslog的server端就可以識別syslog-ng發過來的訊息。

Input模組包括imklg、imsock、imfile、imtcp等,是訊息來源。

Filetr模組處理訊息的分析和過濾,rsyslog可以根據訊息的任何部分進行過濾,後面會介紹到具體的做法。

Output模組包括omfile、omprog、omtcp、ommysql等。是訊息的目的地。

Queue模組負責訊息的儲存,從Input傳入的未經過濾的訊息放在主佇列中,過濾後的訊息放入到不同action queue中,再由action queue送到各個輸出模組。

1.1啟動引數

正常啟動:指定-f和-i就可以了,新版本不需要-c 5 這樣的引數。

  1. rsyslogd -f /root/rsyslog_worker_dir/rsyslog.conf -i /root/rsyslog_worker_dir/rsyslog.pid
複製程式碼

debug版本:debug訊息會輸出到標註輸出,如果出現未預期的結果,可以嘗試使用debug方式,檢視處理流程

  1. rsyslogd -f /root/rsyslog_worker_dir/rsyslog.conf -i /root/rsyslog_worker_dir/rsyslog.pid -dn >debuglog
複製程式碼

測試配置檔案是否正確:

  1. rsyslogd -N1 -f file
複製程式碼