您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux下如何搭建日志服務器syslog”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下如何搭建日志服務器syslog”這篇文章吧。
在Unix類操作系統上,syslog廣泛應用于系統日志。syslog日志消息既可以記錄在本地文件中,也可以通過網絡發送到接收syslog的服務器。接收syslog的服務器可以對多個設備的syslog消息進行統一的存儲,或者解析其中的內容做相應的處理。常見的應用場景是網絡管理工具、安全管理系統、日志審計系統。
要將linux主機設置為一個中央日志服務器, 我們需要創建一個分離的 /var 分區,并分配足夠大的磁盤空間或者創建一個特殊的LVM卷組。這樣就會使得syslog服務器能夠承擔在日積月累收集日志所帶來的潛在增長。
rsyslog守護進程來自于當前的linux發布版本的預裝模塊,但是默認并沒有啟動。為了能夠讓rsyslog守護進程能夠接受外部的消息,需要編輯其配置文件/etc/rsyslog.conf.
打開文件進行編輯,查找到下面的兩行所在的位置,通過刪除其行首的#字符來取消注釋。
$ModLoad imudp$UDPServerRun 514
這會使得rsysolog守護進程能夠在UDP端口514上接受日志消息了—UDP是一種比TCP速度快,但是并不具有TCP一樣的數據流的可靠性。所以如果你需要使用可靠的傳送機制,就可以通過取消以下行的注釋。
$ModLoad imtcp$InputTCPServerRun 514
需要注意的是,TCP和UDP可以被同時生效來監聽TCP/UDP 連接。
接下來的這步,需要我們來為遠程消息創建模板,并告知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 syslog 代理。當然,有許多的syslog代理可以在windows上運行,在此我們可以使用一個自由軟件程序 Datagram SyslogAgent.
在下載安裝該syslog代理后,需要將其配置為作為服務運行。指定使用何種協議來發送數據,以及遠程rsyslog服務器的IP地址和端口,最后指定應該傳輸的事件日志類型,如下所示。
在我們完成所有的這些配置之后,我們就可以啟動該服務并且在中央rsyslog服務器中使用命令行工具tail -f來查看日志文件了。
以上是“Linux下如何搭建日志服務器syslog”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。