在 Linux 上配置一個 syslog 服務器

syslog服務器能夠用做一個網絡中的日誌監控中心,全部可以經過網絡來發送日誌的設施(包含了Linux或Windows服務器,路由器,交換機以及其餘主機)均可以把日誌發送給它。 經過設置一個syslog服務器,能夠將不一樣設施/主機發送的日誌,過濾和合併到一個獨立的位置,這樣使得你更容易地查看和獲取重要的日誌消息。linux

 

rsyslog 做爲標準的syslog守護進程,預裝在了大多數的Linux發行版中。在客戶端/服務器架構的配置下,rsyslog同時扮演了兩種角色:1.做爲一個syslog服務器,rsyslog能夠收集來自其餘設施的日誌信息;2.做爲一個syslog客戶端,rsyslog能夠將其內部的日誌信息傳輸到遠程的syslog服務器。windows

在此,咱們演示了在linux上如何經過rsyslog來配置一箇中心化syslog服務器。 在進入詳解以前,先溫習一下syslog標準。服務器

 

syslog標準基礎網絡

當經過syslog機制來收集日誌時,有3個必需要考慮到的重要事情:架構

 

設施層級: 監聽何種類型的進程運維

嚴重性(優先) 級別: 收集何種級別的日誌消息tcp

目標: 發送或記錄日誌消息到何處編輯器

如今咱們更加深刻地瞭解一下配置是如何定義的。工具

 

設施層級定義了一種用來對內部系統進程進行分類的方法,linux中的一些常見的設施包括:linux運維

auth: 身份驗證相關的消息(登陸時)

cron: 進程或應用調度相關的消息

daemon: 守護進程相關的消息(內部服務器)

kernel: 內核相關的消息

mail: 內部郵件服務器相關的消息

syslog: syslog 守護進程自己相關的消息

lpr: 打印服務相關的消息

local0 - local7: 用戶自定義的消息 (local7 一般被Cisco 和 Windows 服務器 使用)

 

嚴重性(優先)級別有固定的標準縮寫和指代的值,其中的數字7具備最高的級別,這些級別包含了:

emerg: Emergency(緊急)- 0

alert: Alerts (報警)- 1

crit: Critical (關鍵)- 2

err: Errors (錯誤)- 3

warn: Warnings (警告)- 4

notice: Notification (通知)- 5

info: Information (消息)- 6

debug: Debugging (調試)- 7

 

最後,目標語句會讓一個syslog客戶端來執行如下三個任務之一:

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

經過TCP/UDP將消息路由到遠程的syslog服務器中;

將其發送到一個標準輸出中,例如控制檯。

在 rsyslog裏, syslog的配置是基於如下模式進行結構化的。

 

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

 

在Linux中配置Rsyslog

在咱們理解syslog以後,如今能夠經過rsyslog來將一個Linux服務器配置爲一箇中心syslog服務器了,另外咱們也將看到如何在一個Windows的系統上配置一個syslog客戶端來發送內部日誌到該syslog服務器中。

 

第1步: 初始化系統需求

要將linux主機設置爲一箇中央日誌服務器, 咱們須要建立一個分離的 /var 分區,並分配足夠大的磁盤空間或者建立一個特殊的LVM卷組。這樣就會使得syslog服務器可以承擔在日積月累收集日誌所帶來的潛在增加。

 

第2步: 讓rsyslog 後臺進程生效

rsyslog守護進程來自於當前的linux發佈版本的預裝模塊,可是默認並無啓動。爲了可以讓rsyslog守護進程可以接受外部的消息,須要編輯其配置文件/etc/rsyslog.conf.

打開文件進行編輯,查找到下面的兩行所在的位置,經過刪除其行首的#字符來取消註釋。

$ModLoad imudp

$UDPServerRun 514

這會使得rsysolog守護進程可以在UDP端口514上接受日誌消息了---UDP是一種比TCP速度快,可是並不具備TCP同樣的數據流的可靠性。因此若是你須要使用可靠的傳送機制,就能夠經過取消如下行的註釋。

 

$ModLoad imtcp

$InputTCPServerRun 514 

須要注意的是,TCP和UDP能夠被同時生效來監聽TCP/UDP 鏈接。

 

第3步:建立日誌接收模板

接下來的這步,須要咱們來爲遠程消息建立模板,並告知rsyslog守護進程如何記錄從其餘客戶端機器所接受到的消息。

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

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

*.*  ?RemoteLogs

& ~

在此對該模板進行簡單解釋,$template RemoteLogs(這裏「RemoteLogs」 字符串能夠爲任何其餘的描述性的名稱)指令使rsyslog後臺進程將日誌消息寫到/var/log下的單獨的本地日誌文件中,其中日誌文件的名稱是基於遠程日誌發送機器的主機名以及生成該日誌的應用程序名進行定義的。其中第二行暗示了咱們將RemoteLogs模板應用到全部接收到的日誌上。

符號"& ~"表示了一個重定向規則,被用來告知rsyslog守護進程中止對日誌消息的進一步處理,而且不要在本地寫入。若是沒有使用該重定向規則,那麼全部的遠程消息都會在寫入上述描述的日誌文件以外同時被寫入到本地日誌文件,這就意味着日誌消息實際上被寫了兩次。使用該規則的另一個結果就是syslog服務器自己的日誌消息只會被以該機器主機名命名的專有文件中。

 

若是你想要的話,也可使用下面的模式對特定的設備或嚴重性級別使用新的模板直接來記錄日誌消息。

 

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

例如:

將所有優先級別的全部內部用戶驗證消息指定爲RemoteLogs模板:

authpriv.*   ?RemoteLogs 

 

將全部系統進程中除開mail、用戶驗證和cron消息以外的進程產生的消息級別的日誌指定爲RemoteLogs模板:

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

若是咱們想要將全部從遠程客戶端接受到的消息寫入到一個以它們的IP地址命名的單個文件中,可使用如下的模板。在此咱們爲該模板賦予了「IpTemplate」名稱。

$template IpTemplate,"/var/log/%FROMHOST-IP%.log" 

*.*  ?IpTemplate 

& ~ 

在咱們啓用rsyslog守護進程並編輯好配置文件以後,須要重啓該守護進程。

 

在 Debian,Ubuntu 或 CentOS/RHEL 6中:

$ sudo service rsyslog restart 

 

在 Fedora 或 CentOS/RHEL 7中:

$ sudo systemctl restart rsyslog 

咱們能夠經過netstat命令來驗證rsyslog守護進程是否正常工做。

 $ sudo netstat -tulpn | grep rsyslog 

在UDP監聽端口下工做的rsyslog守護進程會有相似下面的輸出。

udp     0 0    0.0.0.0:514    0.0.0.0:*      551/rsyslogd 

udp6    0 0    :::514         :::*           551/rsyslogd 

若是rsyslog守護進程被設置在TCP鏈接端口,那麼應該有相似下面所示的輸出。

tcp     0 0     0.0.0.0:514   0.0.0.0:*     LISTEN    1891/rsyslogd 

tcp6    0 0     :::514        :::*          LISTEN    1891/rsyslogd

 

發送Windows日誌到一個遠程的rsyslog服務器

要將一個Windows客戶端的日誌消息轉發到咱們的rsyslog服務器,須要一個安裝 Windows syslog 代理。固然,有許多的syslog代理能夠在windows上運行,在此咱們可使用一個自由軟件程序 Datagram SyslogAgent.

在下載安裝該syslog代理後,須要將其配置爲做爲服務運行。指定使用何種協議來發送數據,以及遠程rsyslog服務器的IP地址和端口,最後指定應該傳輸的事件日誌類型.

在咱們完成全部的這些配置以後,咱們就能夠啓動該服務而且在中央rsyslog服務器中使用命令行工具tail -f來查看日誌文件了。

 

總結

經過建立一個能夠收集本地和遠程主機的中央rsyslog服務器,咱們能夠更好地瞭解在這些系統內部究竟發生着什麼,並且能夠更加容易地調試它們的問題,是否在它們之間有任何延遲或崩潰存在。

免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/

或者勾搭Q2430675018

歡迎加入linux交流羣 478068715

相關文章
相關標籤/搜索