Linux syslog安裝與配置

編譯自: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??? 評論:?7收藏:?6分享:?6

本文導(dǎo)航

-syslog標(biāo)準(zhǔn)基礎(chǔ)11%

-在Linux中配置Rsyslog33%

-第1步: 初始化系統(tǒng)需求36%

-第2步: 讓rsyslog 后臺進(jìn)程生效39%

-第3步:創(chuàng)建日志接收模板48%

-發(fā)送Windows日志到一個遠(yuǎn)程的rsyslog服務(wù)器83%

-總結(jié)92%

syslog服務(wù)器可以用作一個網(wǎng)絡(luò)中的日志監(jiān)控中心,所有能夠通過網(wǎng)絡(luò)來發(fā)送日志的設(shè)施(包含了Linux或Windows服務(wù)器,路由器,交換機(jī)以及其他主機(jī))都可以把日志發(fā)送給它。 通過設(shè)置一個syslog服務(wù)器,可以將不同設(shè)施/主機(jī)發(fā)送的日志,過濾和合并到一個獨(dú)立的位置,這樣使得你更容易地查看和獲取重要的日志消息。

rsyslog?作為標(biāo)準(zhǔn)的syslog守護(hù)進(jìn)程,預(yù)裝在了大多數(shù)的Linux發(fā)行版中。在客戶端/服務(wù)器架構(gòu)的配置下,rsyslog同時(shí)扮演了兩種角色:1.作為一個syslog服務(wù)器,rsyslog可以收集來自其他設(shè)施的日志信息;2.作為一個syslog客戶端,rsyslog可以將其內(nèi)部的日志信息傳輸?shù)竭h(yuǎn)程的syslog服務(wù)器。

在此,我們演示了在linux上如何通過rsyslog來配置一個中心化syslog服務(wù)器。 在進(jìn)入詳解之前,先溫習(xí)一下syslog標(biāo)準(zhǔn)。

syslog標(biāo)準(zhǔn)基礎(chǔ)

當(dāng)通過syslog機(jī)制來收集日志時(shí),有3個必須要考慮到的重要事情:

設(shè)施層級: 監(jiān)聽何種類型的進(jìn)程

嚴(yán)重性 (優(yōu)先) 級別: 收集何種級別的日志消息

目標(biāo): 發(fā)送或記錄日志消息到何處

現(xiàn)在我們更加深入地了解一下配置是如何定義的。

設(shè)施層級定義了一種用來對內(nèi)部系統(tǒng)進(jìn)程進(jìn)行分類的方法,linux中的一些常見的設(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)先)級別有固定的標(biāo)準(zhǔn)縮寫和指代的值,其中的數(shù)字7具有最高的級別,這些級別包含了:

emerg: Emergency(緊急)- 0

alert: Alerts (報(bào)警)- 1

crit: Critical (關(guān)鍵)- 2

err: Errors (錯誤)- 3

warn: Warnings (警告)- 4

notice: Notification (通知)- 5

info: Information (消息)- 6

debug: Debugging (調(diào)試)- 7

最后,目標(biāo)語句會讓一個syslog客戶端來執(zhí)行以下三個任務(wù)之一:

保存日志消息到一個本地文件;

通過TCP/UDP將消息路由到遠(yuǎn)程的syslog服務(wù)器中;

將其發(fā)送到一個標(biāo)準(zhǔn)輸出中,例如控制臺。

在 rsyslog里, syslog的配置是基于以下模式進(jìn)行結(jié)構(gòu)化的。

[facility-level].[severity-level]? [destination]

在Linux中配置Rsyslog

在我們理解syslog之后,現(xiàn)在可以通過rsyslog來將一個Linux服務(wù)器配置為一個中心syslog服務(wù)器了,另外我們也將看到如何在一個Windows的系統(tǒng)上配置一個syslog客戶端來發(fā)送內(nèi)部日志到該syslog服務(wù)器中。

第1步: 初始化系統(tǒng)需求

要將linux主機(jī)設(shè)置為一個中央日志服務(wù)器, 我們需要創(chuàng)建一個分離的 /var 分區(qū),并分配足夠大的磁盤空間或者創(chuàng)建一個特殊的LVM卷組。這樣就會使得syslog服務(wù)器能夠承擔(dān)在日積月累收集日志所帶來的潛在增長。

第2步: 讓rsyslog 后臺進(jìn)程生效

rsyslog守護(hù)進(jìn)程來自于當(dāng)前的linux發(fā)布版本的預(yù)裝模塊,但是默認(rèn)并沒有啟動。為了能夠讓rsyslog守護(hù)進(jìn)程能夠接受外部的消息,需要編輯其配置文件/etc/rsyslog.conf.

打開文件進(jìn)行編輯,查找到下面的兩行所在的位置,通過刪除其行首的#字符來取消注釋。

$ModLoad imudp

$UDPServerRun 514

這會使得rsysolog守護(hù)進(jìn)程能夠在UDP端口514上接受日志消息了---UDP是一種比TCP速度快,但是并不具有TCP一樣的數(shù)據(jù)流的可靠性。所以如果你需要使用可靠的傳送機(jī)制,就可以通過取消以下行的注釋。

$ModLoad imtcp

$InputTCPServerRun 514

需要注意的是,TCP和UDP可以被同時(shí)生效來監(jiān)聽TCP/UDP 連接。

第3步:創(chuàng)建日志接收模板

接下來的這步,需要我們來為遠(yuǎn)程消息創(chuàng)建模板,并告知rsyslog守護(hù)進(jìn)程如何記錄從其他客戶端機(jī)器所接受到的消息。

使用文本編輯器來打開 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE塊前追加以下的模板。

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *

*.*? ?RemoteLogs

& ~

在此對該模板進(jìn)行簡單解釋,$template RemoteLogs(這里“RemoteLogs” 字符串可以為任何其他的描述性的名稱)指令使rsyslog后臺進(jìn)程將日志消息寫到/var/log下的單獨(dú)的本地日志文件中,其中日志文件的名稱是基于遠(yuǎn)程日志發(fā)送機(jī)器的主機(jī)名以及生成該日志的應(yīng)用程序名進(jìn)行定義的。其中第二行暗示了我們將RemoteLogs模板應(yīng)用到所有接收到的日志上。

符號"& ~"表示了一個重定向規(guī)則,被用來告知rsyslog守護(hù)進(jìn)程停止對日志消息的進(jìn)一步處理,并且不要在本地寫入。如果沒有使用該重定向規(guī)則,那么所有的遠(yuǎn)程消息都會在寫入上述描述的日志文件之外同時(shí)被寫入到本地日志文件,這就意味著日志消息實(shí)際上被寫了兩次。使用該規(guī)則的另外一個結(jié)果就是syslog服務(wù)器本身的日志消息只會被以該機(jī)器主機(jī)名命名的專有文件中。

如果你想要的話,也可以使用下面的模式對特定的設(shè)備或嚴(yán)重性級別使用新的模板直接來記錄日志消息。

[facility-level].[severity-level]? ? ?RemoteLogs

例如:

將全部優(yōu)先級別的所有內(nèi)部用戶驗(yàn)證消息指定為RemoteLogs模板:

authpriv.*? ?RemoteLogs

將所有系統(tǒng)進(jìn)程中除開mail、用戶驗(yàn)證和cron消息之外的進(jìn)程產(chǎn)生的消息級別的日志指定為RemoteLogs模板:

*.info,mail.none,authpriv.none,cron.none? ? ?RemoteLogs

如果我們想要將所有從遠(yuǎn)程客戶端接受到的消息寫入到一個以它們的IP地址命名的單個文件中,可以使用以下的模板。在此我們?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

我們可以通過netstat命令來驗(yàn)證rsyslog守護(hù)進(jìn)程是否正常工作。

$ sudo netstat -tulpn | grep rsyslog

在UDP監(jiān)聽端口下工作的rsyslog守護(hù)進(jìn)程會有類似下面的輸出。

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日志到一個遠(yuǎn)程的rsyslog服務(wù)器

要將一個Windows客戶端的日志消息轉(zhuǎn)發(fā)到我們的rsyslog服務(wù)器,需要一個安裝 Windows syslog 代理。當(dāng)然,有許多的syslog代理可以在windows上運(yùn)行,在此我們可以使用一個自由軟件程序?Datagram SyslogAgent.

在下載安裝該syslog代理后,需要將其配置為作為服務(wù)運(yùn)行。指定使用何種協(xié)議來發(fā)送數(shù)據(jù),以及遠(yuǎn)程rsyslog服務(wù)器的IP地址和端口,最后指定應(yīng)該傳輸?shù)氖录罩绢愋?,如下所示?/p>

在我們完成所有的這些配置之后,我們就可以啟動該服務(wù)并且在中央rsyslog服務(wù)器中使用命令行工具tail -f來查看日志文件了。

總結(jié)

通過創(chuàng)建一個可以收集本地和遠(yuǎn)程主機(jī)的中央rsyslog服務(wù)器,我們可以更好地了解在這些系統(tǒng)內(nèi)部究竟發(fā)生著什么,而且可以更加容易地調(diào)試它們的問題,是否在它們之間有任何延遲或崩潰存在。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容