編譯自:http://xmodulo.com/configure-syslog-server-linux.html作者: Caezsar M
原創(chuàng):LCTT?https://linux.cn/article-5023-1.html譯者:?theo-L
本文地址:https://linux.cn/article-5023-1.html
2015-03-10 15:17??? 評(píng)論:?7收藏:?6分享:?6
本文導(dǎo)航
-syslog標(biāo)準(zhǔn)基礎(chǔ)11%
-在Linux中配置Rsyslog33%
-第2步: 讓rsyslog 后臺(tái)進(jìn)程生效39%
-發(fā)送Windows日志到一個(gè)遠(yuǎn)程的rsyslog服務(wù)器83%
-總結(jié)92%
syslog服務(wù)器可以用作一個(gè)網(wǎng)絡(luò)中的日志監(jiān)控中心,所有能夠通過(guò)網(wǎng)絡(luò)來(lái)發(fā)送日志的設(shè)施(包含了Linux或Windows服務(wù)器晴氨,路由器,交換機(jī)以及其他主機(jī))都可以把日志發(fā)送給它放妈。 通過(guò)設(shè)置一個(gè)syslog服務(wù)器氯迂,可以將不同設(shè)施/主機(jī)發(fā)送的日志,過(guò)濾和合并到一個(gè)獨(dú)立的位置,這樣使得你更容易地查看和獲取重要的日志消息。
rsyslog?作為標(biāo)準(zhǔn)的syslog守護(hù)進(jìn)程管行,預(yù)裝在了大多數(shù)的Linux發(fā)行版中。在客戶端/服務(wù)器架構(gòu)的配置下邪媳,rsyslog同時(shí)扮演了兩種角色:1.作為一個(gè)syslog服務(wù)器捐顷,rsyslog可以收集來(lái)自其他設(shè)施的日志信息;2.作為一個(gè)syslog客戶端雨效,rsyslog可以將其內(nèi)部的日志信息傳輸?shù)竭h(yuǎn)程的syslog服務(wù)器迅涮。
在此,我們演示了在linux上如何通過(guò)rsyslog來(lái)配置一個(gè)中心化syslog服務(wù)器徽龟。 在進(jìn)入詳解之前叮姑,先溫習(xí)一下syslog標(biāo)準(zhǔn)。
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ù)之一:
保存日志消息到一個(gè)本地文件讼昆;
通過(guò)TCP/UDP將消息路由到遠(yuǎn)程的syslog服務(wù)器中托享;
將其發(fā)送到一個(gè)標(biāo)準(zhǔn)輸出中,例如控制臺(tái)浸赫。
在 rsyslog里, syslog的配置是基于以下模式進(jìn)行結(jié)構(gòu)化的闰围。
[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)取消注釋。
$ModLoad imudp
$UDPServerRun 514
這會(huì)使得rsysolog守護(hù)進(jìn)程能夠在UDP端口514上接受日志消息了---UDP是一種比TCP速度快,但是并不具有TCP一樣的數(shù)據(jù)流的可靠性尘吗。所以如果你需要使用可靠的傳送機(jī)制逝她,就可以通過(guò)取消以下行的注釋。
$ModLoad imtcp
$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塊前追加以下的模板介劫。
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
*.*? ?RemoteLogs
& ~
在此對(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)記錄日志消息侣背。
[facility-level].[severity-level]? ? ?RemoteLogs
例如:
將全部?jī)?yōu)先級(jí)別的所有內(nèi)部用戶驗(yàn)證消息指定為RemoteLogs模板:
authpriv.*? ?RemoteLogs
將所有系統(tǒng)進(jìn)程中除開(kāi)mail、用戶驗(yàn)證和cron消息之外的進(jìn)程產(chǎn)生的消息級(jí)別的日志指定為RemoteLogs模板:
*.info,mail.none,authpriv.none,cron.none? ? ?RemoteLogs
如果我們想要將所有從遠(yuǎn)程客戶端接受到的消息寫(xiě)入到一個(gè)以它們的IP地址命名的單個(gè)文件中慨默,可以使用以下的模板贩耐。在此我們?yōu)樵撃0遒x予了“IpTemplate”名稱。
$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.*? ?IpTemplate
& ~
在我們啟用rsyslog守護(hù)進(jìn)程并編輯好配置文件之后厦取,需要重啟該守護(hù)進(jìn)程潮太。
在 Debian,Ubuntu 或 CentOS/RHEL 6中:
$ sudo service rsyslog restart
在 Fedora 或 CentOS/RHEL 7中:
$ sudo systemctl restart rsyslog
我們可以通過(guò)netstat命令來(lái)驗(yàn)證rsyslog守護(hù)進(jìn)程是否正常工作虾攻。
$ sudo netstat -tulpn | grep rsyslog
在UDP監(jiān)聽(tīng)端口下工作的rsyslog守護(hù)進(jìn)程會(huì)有類似下面的輸出铡买。
udp? ? 0 0? ? 0.0.0.0:514? ? 0.0.0.0:*? ? ? 551/rsyslogd
udp6? ? 0 0? ? :::514? ? ? ? :::*? ? ? ? ? 551/rsyslogd
如果rsyslog守護(hù)進(jìn)程被設(shè)置在TCP連接端口,那么應(yīng)該有類似下面所示的輸出霎箍。
tcp? ? 0 0? ? 0.0.0.0:514? 0.0.0.0:*? ? LISTEN? ? 1891/rsyslogd
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>
在我們完成所有的這些配置之后蒂胞,我們就可以啟動(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)題,是否在它們之間有任何延遲或崩潰存在赴叹。