新聞中心
Syslog常被稱為系統(tǒng)日志或系統(tǒng)記錄,是一種用來(lái)在互聯(lián)網(wǎng)協(xié)議(TCP/IP)的網(wǎng)上中傳遞記錄檔消息的標(biāo)準(zhǔn)。這個(gè)詞匯常用來(lái)指涉實(shí)際的syslog 協(xié)議,或者那些提交syslog消息的應(yīng)用程序或數(shù)據(jù)庫(kù),下面為大家講解一下在Linux系統(tǒng)中安裝Syslog具體方法。

syslog標(biāo)準(zhǔn)基礎(chǔ)
當(dāng)通過(guò)syslog機(jī)制來(lái)收集日志時(shí),有3個(gè)必須要考慮到的重要事情: ?設(shè)施層級(jí): 監(jiān)聽(tīng)何種類型的進(jìn)程 ?嚴(yán)重性 (優(yōu)先) 級(jí)別: 收集何種級(jí)別的日志消息 ?目標(biāo): 發(fā)送或記錄日志消息到何處
現(xiàn)在我們更加深入地了解一下配置是如何定義的。
設(shè)施層級(jí)定義了一種用來(lái)對(duì)內(nèi)部系統(tǒng)進(jìn)程進(jìn)行分類的方法,linux中的一些常見(jiàn)的設(shè)施包括: ?auth: 身份驗(yàn)證相關(guān)的消息(登錄時(shí)) ?cron: 進(jìn)程或應(yīng)用調(diào)度相關(guān)的消息 ?daemon: 守護(hù)進(jìn)程相關(guān)的消息(內(nèi)部服務(wù)器) ?kernel: 內(nèi)核相關(guān)的消息 ?mail: 內(nèi)部郵件服務(wù)器相關(guān)的消息 ?syslog: syslog 守護(hù)進(jìn)程本身相關(guān)的消息 ?lpr: 打印服務(wù)相關(guān)的消息 ?local0 – local7: 用戶自定義的消息 (local7 通常被Cisco 和 Windows 服務(wù)器 使用)
嚴(yán)重性(優(yōu)先)級(jí)別有固定的標(biāo)準(zhǔn)縮寫(xiě)和指代的值,其中的數(shù)字7具有最高的級(jí)別,這些級(jí)別包含了: ?emerg: Emergency(緊急)- 0 ?alert: Alerts (報(bào)警)- 1 ?crit: Critical (關(guān)鍵)- 2 ?err: Errors (錯(cuò)誤)- 3 ?warn: Warnings (警告)- 4 ?notice: Notification (通知)- 5 ?info: Information (消息)- 6 ?debug: Debugging (調(diào)試)- 7
最后,目標(biāo)語(yǔ)句會(huì)讓一個(gè)syslog客戶端來(lái)執(zhí)行以下三個(gè)任務(wù)之一: 1.保存日志消息到一個(gè)本地文件; 2.通過(guò)TCP/UDP將消息路由到遠(yuǎn)程的syslog服務(wù)器中; 3.將其發(fā)送到一個(gè)標(biāo)準(zhǔn)輸出中,例如控制臺(tái)。
在 rsyslog里, syslog的配置是基于以下模式進(jìn)行結(jié)構(gòu)化的。
1.[facility-level].[severity-level] [destination]
在Linux中配置Rsyslog
在我們理解syslog之后,現(xiàn)在可以通過(guò)rsyslog來(lái)將一個(gè)Linux服務(wù)器配置為一個(gè)中心syslog服務(wù)器了,另外我們也將看到如何在一個(gè)Windows的系統(tǒng)上配置一個(gè)syslog客戶端來(lái)發(fā)送內(nèi)部日志到該syslog服務(wù)器中。
第1步: 初始化系統(tǒng)需求
要將linux主機(jī)設(shè)置為一個(gè)中央日志服務(wù)器, 我們需要?jiǎng)?chuàng)建一個(gè)分離的 /var 分區(qū),并分配足夠大的磁盤(pán)空間或者創(chuàng)建一個(gè)特殊的LVM卷組。這樣就會(huì)使得syslog服務(wù)器能夠承擔(dān)在日積月累收集日志所帶來(lái)的潛在增長(zhǎng)。
第2步: 讓rsyslog 后臺(tái)進(jìn)程生效
rsyslog守護(hù)進(jìn)程來(lái)自于當(dāng)前的linux發(fā)布版本的預(yù)裝模塊,但是默認(rèn)并沒(méi)有啟動(dòng)。為了能夠讓rsyslog守護(hù)進(jìn)程能夠接受外部的消息,需要編輯其配置文件/etc/rsyslog.conf.
打開(kāi)文件進(jìn)行編輯,查找到下面的兩行所在的位置,通過(guò)刪除其行首的#字符來(lái)取消注釋。
1.$ModLoad imudp
2.$UDPServerRun 514
這會(huì)使得rsysolog守護(hù)進(jìn)程能夠在UDP端口514上接受日志消息了—UDP是一種比TCP速度快,但是并不具有TCP一樣的數(shù)據(jù)流的可靠性。所以如果你需要使用可靠的傳送機(jī)制,就可以通過(guò)取消以下行的注釋。
1.$ModLoad imtcp
2.$InputTCPServerRun 514
需要注意的是,TCP和UDP可以被同時(shí)生效來(lái)監(jiān)聽(tīng)TCP/UDP 連接。
第3步:創(chuàng)建日志接收模板
接下來(lái)的這步,需要我們來(lái)為遠(yuǎn)程消息創(chuàng)建模板,并告知rsyslog守護(hù)進(jìn)程如何記錄從其他客戶端機(jī)器所接受到的消息。
使用文本編輯器來(lái)打開(kāi) /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE塊前追加以下的模板。
1.$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
2.*.* ?RemoteLogs
3.& ~
在此對(duì)該模板進(jìn)行簡(jiǎn)單解釋,$template RemoteLogs(這里“RemoteLogs” 字符串可以為任何其他的描述性的名稱)指令使rsyslog后臺(tái)進(jìn)程將日志消息寫(xiě)到/var/log下的單獨(dú)的本地日志文件中,其中日志文件的名稱是基于遠(yuǎn)程日志發(fā)送機(jī)器的主機(jī)名以及生成該日志的應(yīng)用程序名進(jìn)行定義的。其中第二行暗示了我們將RemoteLogs模板應(yīng)用到所有接收到的日志上。
符號(hào)”& ~”表示了一個(gè)重定向規(guī)則,被用來(lái)告知rsyslog守護(hù)進(jìn)程停止對(duì)日志消息的進(jìn)一步處理,并且不要在本地寫(xiě)入。如果沒(méi)有使用該重定向規(guī)則,那么所有的遠(yuǎn)程消息都會(huì)在寫(xiě)入上述描述的日志文件之外同時(shí)被寫(xiě)入到本地日志文件,這就意味著日志消息實(shí)際上被寫(xiě)了兩次。使用該規(guī)則的另外一個(gè)結(jié)果就是syslog服務(wù)器本身的日志消息只會(huì)被以該機(jī)器主機(jī)名命名的專有文件中。
如果你想要的話,也可以使用下面的模式對(duì)特定的設(shè)備或嚴(yán)重性級(jí)別使用新的模板直接來(lái)記錄日志消息。
1.[facility-level].[severity-level] ?RemoteLogs
例如:
將全部?jī)?yōu)先級(jí)別的所有內(nèi)部用戶驗(yàn)證消息指定為RemoteLogs模板:
1.authpriv.* ?RemoteLogs
將所有系統(tǒng)進(jìn)程中除開(kāi)mail、用戶驗(yàn)證和cron消息之外的進(jìn)程產(chǎn)生的消息級(jí)別的日志指定為RemoteLogs模板:
1.*.info,mail.none,authpriv.none,cron.none ?RemoteLogs
如果我們想要將所有從遠(yuǎn)程客戶端接受到的消息寫(xiě)入到一個(gè)以它們的IP地址命名的單個(gè)文件中,可以使用以下的模板。在此我們?yōu)樵撃0遒x予了“IpTemplate”名稱。
1.$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
2.*.* ?IpTemplate
3.& ~
在我們啟用rsyslog守護(hù)進(jìn)程并編輯好配置文件之后,需要重啟該守護(hù)進(jìn)程。
在 Debian,Ubuntu 或 CentOS/RHEL 6中:
1.$ sudo service rsyslog restart
在 Fedora 或 CentOS/RHEL 7中:
1.$ sudo systemctl restart rsyslog
我們可以通過(guò)netstat命令來(lái)驗(yàn)證rsyslog守護(hù)進(jìn)程是否正常工作。
1. $ sudo netstat -tulpn | grep rsyslog
在UDP監(jiān)聽(tīng)端口下工作的rsyslog守護(hù)進(jìn)程會(huì)有類似下面的輸出。
1.udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd
2.udp6 0 0 :::514 :::* 551/rsyslogd
如果rsyslog守護(hù)進(jìn)程被設(shè)置在TCP連接端口,那么應(yīng)該有類似下面所示的輸出。
1.tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd
2.tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd
發(fā)送Windows日志到一個(gè)遠(yuǎn)程的rsyslog服務(wù)器
要將一個(gè)Windows客戶端的日志消息轉(zhuǎn)發(fā)到我們的rsyslog服務(wù)器,需要一個(gè)安裝 Windows syslog 代理。當(dāng)然,有許多的syslog代理可以在windows上運(yùn)行,在此我們可以使用一個(gè)自由軟件程序 Datagram SyslogAgent.
在下載安裝該syslog代理后,需要將其配置為作為服務(wù)運(yùn)行。指定使用何種協(xié)議來(lái)發(fā)送數(shù)據(jù),以及遠(yuǎn)程rsyslog服務(wù)器的IP地址和端口,最后指定應(yīng)該傳輸?shù)氖录罩绢愋?,如下所示?/p>
在 Linux 上配置一個(gè) syslog 服務(wù)器在 Linux 上配置一個(gè) syslog 服務(wù)器
在我們完成所有的這些配置之后,我們就可以啟動(dòng)該服務(wù)并且在中央rsyslog服務(wù)器中使用命令行工具tail -f來(lái)查看日志文件了。
總結(jié)
通過(guò)創(chuàng)建一個(gè)可以收集本地和遠(yuǎn)程主機(jī)的中央rsyslog服務(wù)器,我們可以更好地了解在這些系統(tǒng)內(nèi)部究竟發(fā)生著什么,而且可以更加容易地調(diào)試它們的問(wèn)題,是否在它們之間有任何延遲或崩潰存在。
文章題目:Linux系統(tǒng)中安裝Syslog具體方法
轉(zhuǎn)載來(lái)源:http://fisionsoft.com.cn/article/dhheeds.html


咨詢
建站咨詢
