加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • Part 01●??rsyslog介紹?●
    • Part 02●??rsyslog轉(zhuǎn)發(fā)?●
    • Part 03●? rsyslog加密?●
    • Part 04●? 應(yīng)用場景?●
    • Part 05●? 總結(jié)?●
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

五分鐘技術(shù)趣談 | 淺談rsyslog日志服務(wù)及應(yīng)用

2023/12/15
5316
閱讀需 16 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:徐煒峰,單位:中國移動智慧家庭運(yùn)營中心

在現(xiàn)代計算和網(wǎng)絡(luò)環(huán)境中,日志管理變得至關(guān)重要,尤其是在企業(yè)日志管理、應(yīng)用故障排除以及安全事件監(jiān)控中。無論是在企業(yè)內(nèi)部的服務(wù)器集群中,還是在公有云中的分布式應(yīng)用系統(tǒng)中,分析日志數(shù)據(jù)對于監(jiān)控、故障排除、性能優(yōu)化和安全性都至關(guān)重要。而 rsyslog作為一個功能強(qiáng)大的開源工具,因其可靠性、靈活性和可擴(kuò)展性而成為許多組織和開發(fā)人員的首選。

Part 01●??rsyslog介紹?

1.1 rsyslog日志服務(wù)簡介

rsyslog (rocket-fast system for log)是基于syslog協(xié)議完成系統(tǒng)日志的處理轉(zhuǎn)發(fā),它是一個極速的日志處理系統(tǒng),性能可以達(dá)到每秒百萬級別。它提供高性能、極好的安全功能和模塊化設(shè)計。

特性:

①高性能:rsyslog采用了高效的線程模型和異步處理機(jī)制,能夠快速而穩(wěn)定地處理大量的日志數(shù)據(jù)。

②靈活強(qiáng)大:rsyslog支持多種輸入和輸出模塊,可以與各種設(shè)備和系統(tǒng)集成,例如syslog、tcp、udp、tls等。同時,rsyslog還支持多種過濾和處理規(guī)則,可以根據(jù)需求定制化日志的存儲、轉(zhuǎn)發(fā)和處理方式。

③可擴(kuò)展性:rsyslog具有良好的可擴(kuò)展性,可以根據(jù)需求進(jìn)行定制開發(fā)和插件擴(kuò)展,滿足不同場景下的日志管理需求。

④安全性:rsyslog支持加密傳輸和認(rèn)證機(jī)制,保證日志數(shù)據(jù)的安全性和完整性。

圖1 rsyslog架構(gòu)圖

如圖1所示,rsyslog的消息流是從輸入模塊->預(yù)處理模塊->主隊列->過濾模塊- >執(zhí)行隊列->輸出模塊。

1.2 rsyslog基本配置

rsyslog引入了facility(設(shè)施)的概念,也就是 rsyslog服務(wù)進(jìn)程所要接收日志的各代理,這些代理負(fù)責(zé)收集對應(yīng)的日志信息;常用的日志設(shè)施有如下幾種:

auth , authpriv , cron , daemon , kern , lpr , mail , news , syslog , user, ftp , uucp , security, local0 ~ local7 ;另外系統(tǒng)日志還有priority優(yōu)先級概念,可用的優(yōu)先級包含 debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0) ,如圖2所示:

圖2 rsyslog的設(shè)施/優(yōu)先級圖

基于設(shè)施/優(yōu)先級的過濾器是最常用的方法,語法如下:FACILITY.PRIORITY,如圖3所示,為rsyslog的默認(rèn)規(guī)則。

圖3 rsyslog默認(rèn)rules圖

基礎(chǔ)格式,即最簡單的配置格式,沒有任何多余的功能,配置中默認(rèn)的內(nèi)容即為此格式。

# 郵件的所有信息存在/var/log/maillog;這里有一個“-”符號表示是使用異步的方式記錄mail.*                                   -/var/log/maillog# 郵件的錯誤信息轉(zhuǎn)發(fā)到server.example.com,使用tcp連接(@@)mail.error                                @@server.example.com

高級格式,支持更多模塊,更多參數(shù),更多選項,并且允許對日志格式,內(nèi)容等進(jìn)行自定義修改的格式。

# 郵件的所有信息存在/var/log/maillog;這里有一個“-”符號表示是使用異步的方式記錄mail.* action(type="omfile" File="/var/log/maillog")# 郵件的錯誤信息轉(zhuǎn)發(fā)到server.example.com,使用tcp連接(@@)mail.error  action(type="omfwd" Target="server.example.com" Port="10514" Protocol="tcp")

rsyslog.conf中還包括用于指定日志的輸入、輸出、過濾、格式化等操作,以下是rsyslog.conf配置文件的詳解:

1.2.1 輸入模塊配置

rsyslog.conf文件中的輸入模塊用于指定從哪些源獲取日志信息,包括本地日志、遠(yuǎn)程日志、系統(tǒng)日志等。常用的輸入模塊包括:

imuxsock: 用于從Unix域套接字讀取本地日志信息。

imudp: 用于從UDP協(xié)議接收遠(yuǎn)程日志信息。

imtcp: 用于從TCP協(xié)議接收遠(yuǎn)程日志信息。

imiournal: 用于從systemd-iournald服務(wù)讀取系統(tǒng)日志信息。

1.2.2 過濾模塊配置

rsyslog.conf文件中的過濾模塊用于根據(jù)規(guī)則過濾日志信息,只保留符合條件的日志信息。常用的過濾模塊包括:

if: 用于根據(jù)條件過濾日志信息。

regex: 用于根據(jù)正則表達(dá)式過濾日志信息。

property: 用于根據(jù)屬性過濾日志信息。

1.2.3 輸出模塊配置

rsyslog.conf文件中的輸出模塊用于指定將日志信息輸出到哪些目標(biāo),包括文件、數(shù)據(jù)庫、網(wǎng)絡(luò)等。常用的輸出模塊包括:

omfile: 用于將日志信息輸出到文件。

ommysgl: 用于將日志信息輸出到MySQL數(shù)據(jù)庫。

omelasticsearch: 用于將日志信息輸出到Elasticsearch搜索引警。

omfwd: 用于將日志信息轉(zhuǎn)發(fā)到遠(yuǎn)程rsyslog服務(wù)器。

1.2.4 格式化模塊配置

rsyslg.conf文件中的格式化模塊用于指定日志信息的格式,包括時間、主機(jī)名、進(jìn)程名、日志級別等。常用的格式化模塊包括:

template: 用于定義日志信息的格式模板。

property: 用于指定日志信息中的屬性,如時間、主機(jī)名、進(jìn)程名等。

msg: 用于指定日志信息的內(nèi)容。

Part 02●??rsyslog轉(zhuǎn)發(fā)?

2.1 客戶端配置

對于客戶端,我們需要在rsyslog的配置文件中進(jìn)行一些設(shè)置。首先,我們需要指定要發(fā)送的目標(biāo)主機(jī)和端口號。這可以通過設(shè)置*.* @@<目標(biāo)主機(jī)>:<端口號>來實現(xiàn),如下所示。

*.* @@192.168.75.137:514             # tcp 協(xié)議*.* @192.168.75.137:514               # udp 協(xié)議

接著,我們可以設(shè)置一些過濾條件,以便只將某些特定類型的日志消息發(fā)送到目標(biāo)系統(tǒng)。這可以通過設(shè)置類似于if $msg contains '<關(guān)鍵詞>' then @@<目標(biāo)主機(jī)>:<端口號>的語句來實現(xiàn)。最后,我們還可以設(shè)置一些其他的參數(shù),如發(fā)送協(xié)議、超時時間等等。

2.2 服務(wù)端配置

對于服務(wù)端,我們需要配置rsyslog服務(wù)器來接收和處理轉(zhuǎn)發(fā)過來的日志消息。首先,我們需要設(shè)置rsyslog服務(wù)器監(jiān)聽的端口號,接著,我們需要在配置文件中指定處理轉(zhuǎn)發(fā)過來的日志消息的方式,如將其志消息保存到本地文件中、存儲到數(shù)據(jù)庫中、發(fā)送到其他系統(tǒng)等等。這可以通過在配置文件中設(shè)置類似于*.* /var/log/file的語句來實現(xiàn)。

# provides UDP syslog reception$ModLoad imudp$UDPServerRun 514# provides TCP syslog reception#$ModLoad imtcp#$InputTCPServerRun 514$AllowedSender tcp, 192.168.34.100/24$template RemoteLogs,"/var/log/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"*.*  ?RemoteLogs

可以通過$AllowedSender控制只允許192.168.34.0網(wǎng)段內(nèi)的主機(jī)以 tcp 協(xié)議來傳輸。

$template Remote定義了模板,保存的路徑和文件名均可自定義,同時也區(qū)分了不同主機(jī)的日志。

$InputTCPServerRun 514開啟tcp,tcp和udp可以共存的。

Part 03●? rsyslog加密?

除了轉(zhuǎn)發(fā)日志消息,rsyslog還提供了加密傳輸日志消息的功能。當(dāng)我們需要在公共網(wǎng)絡(luò)上傳輸敏感信息時,如個人身份信息、密碼等等,加密傳輸就變得尤為重要。rsyslog提供了基于TLS/SSL協(xié)議的加密傳輸功能,可以保證日志消息在傳輸過程中的機(jī)密性和完整性。如圖4所示,非加密方式與加密方式客戶端服務(wù)端的對比:

圖4 非加密方式與加密方式客戶端服務(wù)端對比

下面我來介紹下如何加密:

步驟1:安裝gnutls-utils

yum install gnutls-utils

步驟2:生成證書和密鑰

certtool --generate-privkey --outfile ca-key.pem --bits 2048certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem --template ca.cfg

步驟3:生成&分發(fā)各機(jī)器需要的證書

certtool --generate-privkey --outfile key.pem --sec-param 2048certtool --generate-request --load-privkey key.pem --outfile request.pemcerttool --generate-certificate --load-request request.pem --outfile cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

步驟4:配置rsyslog

$ DefaultNetstreamDriver gtls#證書文件 $DefaultNetstreamDriverCAFile="/etc/rsyslog.d/gnutls/ca.pem"$DefaultNetstreamDriverCertFile="/etc/rsyslog.d/gnutls/server-cert.pem"$DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/gnutls/server-key.pem"

步驟5:重啟rsyslog服務(wù)

service rsyslog restart

Part 04●? 應(yīng)用場景?

應(yīng)用場景1:對多臺服務(wù)器日志進(jìn)行匯聚,通過Kafka+ELK(Elasticsearch、Logstash和Kibana)的形式對日志進(jìn)行過濾、存儲、分析、提供復(fù)雜的搜索和可視化功能,如圖1所示:

圖5 應(yīng)用場景1

應(yīng)用場景2:對多臺服務(wù)器日志進(jìn)行匯聚存儲后,經(jīng)過LogCheck對日志文件的監(jiān)控和審查,檢查和過濾系統(tǒng)日志文件中的特定事件或錯誤,通過mail或其他形式進(jìn)行反饋;同時經(jīng)過LogAnalyzer對體制進(jìn)行分析和可視化各種日志數(shù)據(jù)。并提供實時搜索、過濾、報表和圖表等功能,展示給用戶。如圖2所示:

圖6 應(yīng)用場景2

Part 05●? 總結(jié)?

rsyslog是一種功能強(qiáng)大的日志管理工具,具有可靠性、靈活性和可擴(kuò)展性。無論是企業(yè)日志管理、應(yīng)用故障排除還是安全事件監(jiān)控,rsyslog都能提供強(qiáng)大的日志收集、過濾、處理和存儲功能。通過使用 rsyslog,可以更高效地管理日志數(shù)據(jù),提高系統(tǒng)可用性、性能和安全性。

參考文獻(xiàn)

[1]?配置Rsyslog使用TCP/TLS協(xié)議加密傳輸日志,2023年3月3日,https://www.hesc.info/archives/106【訪問日期:2023年9月1日】.

[2] Linux原生日志系統(tǒng)Rsyslog詳解,2022年10月25日,http://e.betheme.net/zz/239280.html?action=onClick【訪問日期:2023年9月1日】.

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
KSZ8999I 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP208

ECAD模型

下載ECAD模型
$31.28 查看
RTL8211E-VB-CG 1 Realtek Semiconductor Ethernet Transceiver
$8.5 查看
TJA1043T,118 1 NXP Semiconductors TJA1043 - High-speed CAN transceiver SOIC 14-Pin

ECAD模型

下載ECAD模型
$2.43 查看
中國移動

中國移動

中國移動有限公司(「本公司」,包括子公司合稱為「本集團(tuán)」)于1997年9月3日在香港成立,本集團(tuán)在中國內(nèi)地所有三十一個省、自治區(qū)、直轄市以及香港特別行政區(qū)提供通信和信息服務(wù),業(yè)務(wù)主要涵蓋個人、家庭、政企和新興市場的語音、數(shù)據(jù)、寬帶、專線、IDC、云計算、物聯(lián)網(wǎng)等,是中國內(nèi)地最大的通信和信息服務(wù)供應(yīng)商,亦是全球網(wǎng)絡(luò)和客戶規(guī)模最大、盈利能力領(lǐng)先、市值排名位居前列的世界級通信和信息運(yùn)營商。

中國移動有限公司(「本公司」,包括子公司合稱為「本集團(tuán)」)于1997年9月3日在香港成立,本集團(tuán)在中國內(nèi)地所有三十一個省、自治區(qū)、直轄市以及香港特別行政區(qū)提供通信和信息服務(wù),業(yè)務(wù)主要涵蓋個人、家庭、政企和新興市場的語音、數(shù)據(jù)、寬帶、專線、IDC、云計算、物聯(lián)網(wǎng)等,是中國內(nèi)地最大的通信和信息服務(wù)供應(yīng)商,亦是全球網(wǎng)絡(luò)和客戶規(guī)模最大、盈利能力領(lǐng)先、市值排名位居前列的世界級通信和信息運(yùn)營商。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

移動Labs是中國移動的社交化新媒體平臺,是面向外部行業(yè)及產(chǎn)業(yè)鏈合作伙伴的信息發(fā)布、業(yè)務(wù)發(fā)展和產(chǎn)業(yè)推進(jìn)門戶。