在 Linux 上配置一個 syslog 伺服器
導讀 | Syslog伺服器可以用作一個網路中的日誌監控中心,所有能夠透過網路來傳送日誌的設施(包含了 或Windows伺服器,路由器,交換機以及其他主機)都可以把日誌傳送給它。 透過設定一個syslog伺服器,可以將不同設施/主機傳送的日誌,過濾和合併到一個獨立的位置,這樣使得你更容易地檢視和獲取重要的日誌訊息。 |
Rsyslog 作為標準的syslog守護程式,預裝在了大多數的Linux發行版中。在客戶端/伺服器架構的配置下,rsyslog同時扮演了兩種角色:1.作為一個syslog伺服器,rsyslog可以收集來自其他設施的日誌資訊;2.作為一個syslog客戶端,rsyslog可以將其內部的日誌資訊傳輸到遠端的syslog伺服器。
在此,我們演示了在linux上如何透過rsyslog來配置一箇中心化syslog伺服器。 在進入詳解之前,先溫習一下syslog標準。
當透過syslog機制來收集日誌時,有3個必須要考慮到的重要事情:
•設施層級: 監聽何種型別的程式
•嚴重性 (優先) 級別: 收集何種級別的日誌訊息
•目標: 傳送或記錄日誌訊息到何處
現在我們更加深入地瞭解一下配置是如何定義的。
設施層級定義了一種用來對內部系統程式進行分類的方法,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客戶端來執行以下三個任務之一:
1.儲存日誌訊息到一個本地檔案;
2.透過TCP/UDP將訊息路由到遠端的syslog伺服器中;
3.將其傳送到一個標準輸出中,例如控制檯。
在 rsyslog裡, syslog的配置是基於以下模式進行結構化的。
1.[facility-level].[severity-level] [destination]
在我們理解syslog之後,現在可以透過rsyslog來將一個Linux伺服器配置為一箇中心syslog伺服器了,另外我們也將看到如何在一個Windows的系統上配置一個syslog客戶端來傳送內部日誌到該syslog伺服器中。
要將linux主機設定為一箇中央日誌伺服器, 我們需要建立一個分離的 /var 分割槽,並分配足夠大的磁碟空間或者建立一個特殊的LVM卷組。這樣就會使得syslog伺服器能夠承擔在日積月累收集日誌所帶來的潛在增長。
rsyslog守護程式來自於當前的linux釋出版本的預裝模組,但是預設並沒有啟動。為了能夠讓rsyslog守護程式能夠接受外部的訊息,需要編輯其配置檔案/etc/rsyslog.conf.
開啟檔案進行編輯,查詢到下面的兩行所在的位置,透過刪除其行首的#字元來取消註釋。
1.$ModLoad imudp 2.$UDPServerRun 514
這會使得rsysolog守護程式能夠在UDP埠514上接受日誌訊息了---UDP是一種比TCP速度快,但是並不具有TCP一樣的資料流的可靠性。所以如果你需要使用可靠的傳送機制,就可以透過取消以下行的註釋。
1.$ModLoad imtcp 2.$InputTCPServerRun 514
需要注意的是,TCP和UDP可以被同時生效來監聽TCP/UDP 連線。
接下來的這步,需要我們來為遠端訊息建立模板,並告知rsyslog守護程式如何記錄從其他客戶端機器所接受到的訊息。
使用文字編輯器來開啟 /etc/rsyslog.conf,然後在GLOBAL DIRECTIVE塊前追加以下的模板。
1.$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * 2.*.* ?RemoteLogs 3.& ~
在此對該模板進行簡單解釋,$template RemoteLogs(這裡“RemoteLogs” 字串可以為任何其他的描述性的名稱)指令使rsyslog後臺程式將日誌訊息寫到/var/log下的單獨的本地日誌檔案中,其中日誌檔案的名稱是基於遠端日誌傳送機器的主機名以及生成該日誌的應用程式名進行定義的。其中第二行暗示了我們將RemoteLogs模板應用到所有接收到的日誌上。
符號"& ~"表示了一個重定向規則,被用來告知rsyslog守護程式停止對日誌訊息的進一步處理,並且不要在本地寫入。如果沒有使用該重定向規則,那麼所有的遠端訊息都會在寫入上述描述的日誌檔案之外同時被寫入到本地日誌檔案,這就意味著日誌訊息實際上被寫了兩次。使用該規則的另外一個結果就是syslog伺服器本身的日誌訊息只會被以該機器主機名命名的專有檔案中。
如果你想要的話,也可以使用下面的模式對特定的裝置或嚴重性級別使用新的模板直接來記錄日誌訊息。
1.[facility-level].[severity-level] ?RemoteLogs
例如:
將全部優先順序別的所有內部使用者驗證訊息指定為RemoteLogs模板:
1.authpriv.* ?RemoteLogs
將所有系統程式中除開mail、使用者驗證和cron訊息之外的程式產生的訊息級別的日誌指定為RemoteLogs模板:
1.*.info,mail.none,authpriv.none,cron.none ?RemoteLogs
如果我們想要將所有從遠端客戶端接受到的訊息寫入到一個以它們的IP地址命名的單個檔案中,可以使用以下的模板。在此我們為該模板賦予了“IpTemplate”名稱。
1.$template IpTemplate,"/var/log/%FROMHOST-IP%.log" 2.*.* ?IpTemplate 3.& ~
在我們啟用rsyslog守護程式並編輯好配置檔案之後,需要重啟該守護程式。
在 Debian,Ubuntu 或 /RHEL 6中:
1.$ sudo service rsyslog restart
在 Fedora 或 CentOS/RHEL 7中:
1.$ sudo systemctl restart rsyslog
我們可以透過netstat 來驗證rsyslog守護程式是否正常工作。
1. $ sudo netstat -tulpn | grep rsyslog
在UDP監聽埠下工作的rsyslog守護程式會有類似下面的輸出。
1.udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd 2.udp6 0 0 :::514 :::* 551/rsyslogd
如果rsyslog守護程式被設定在TCP連線埠,那麼應該有類似下面所示的輸出。
1.tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd 2.tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd
要將一個Windows客戶端的日誌訊息轉發到我們的rsyslog伺服器,需要一個安裝 Windows syslog 代理。當然,有許多的syslog代理可以在windows上執行,在此我們可以使用一個自由軟體程式 Datagram SyslogAgent.
在下載安裝該syslog代理後,需要將其配置為作為服務執行。指定使用何種協議來傳送資料,以及遠端rsyslog伺服器的IP地址和埠,最後指定應該傳輸的事件日誌型別,如下所示。
在我們完成所有的這些配置之後,我們就可以啟動該服務並且在中央rsyslog伺服器中使用 行工具tail -f來檢視日誌檔案了。
透過建立一個可以收集本地和遠端主機的中央rsyslog伺服器,我們可以更好地瞭解在這些系統內部究竟發生著什麼,而且可以更加容易地除錯它們的問題,是否在它們之間有任何延遲或崩潰存在。
via: http://devzum.com/2015/01/28/top-12-best-free-network-monitoring-tools/
作者: 譯者: 校對: 本文由 原創編譯, 榮譽推出
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2949903/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 上配置 syslog 伺服器過程詳解Linux伺服器
- 教你在一個伺服器上安裝多個版本PHP伺服器PHP
- Linux--SysLogLinux
- 在伺服器上配置redmine與nginx配合伺服器Nginx
- vue nginx 打包部署在同一個伺服器 一些配置VueNginx伺服器
- 在Linux(CentOS 6.6)伺服器上安裝並配置基於Apache的SVN伺服器LinuxCentOS伺服器Apache
- ORACLE在LINUX上的系統配置OracleLinux
- 在Linux 上配置vsftpd-2.0.1LinuxFTP
- 在Linux中,如何配置DHCP伺服器?Linux伺服器
- Tomcat 伺服器在Eclipse上的配置Tomcat伺服器Eclipse
- 配置 Rational Functional Tester 在 Linux 上執行FunctionLinux
- Linux伺服器上配置 sudo 及 sudo命令使用Linux伺服器
- 在一臺Apache伺服器上建立多個站點(不同域名)Apache伺服器
- 在伺服器上安裝配置環境遇到的一些問題伺服器
- linux下用python寫的一個syslog服務程式指令碼薦LinuxPython指令碼
- 【Linux】UDEV SCSI規則在Oracle Linux上配置ASMLinuxdevOracleASM
- 如何在Linux上安裝一個開源VPN伺服器Linux伺服器
- Tomcat在Linux上的安裝與配置TomcatLinux
- xsos:一個在 Linux 上閱讀 SOSReport 的工具Linux
- 在國產處理器伺服器上配置DNS 輪詢伺服器DNS
- 在 windows 上搭建一臺 LinuxWindowsLinux
- 在linux伺服器上搭建slurm叢集部署Linux伺服器
- 在 Linux 上如何得到一個段錯誤的核心轉儲Linux
- 在Linux上為PHP配置OCI8連線LinuxPHP
- 在linux上用arptables配置arp防火牆Linux防火牆
- 在Linux上配置Resin 80埠自啟動(轉)Linux
- 國內常見網路與安全、主機系統的syslog配置方法(上)
- 怎樣在 CentOS 7.0 上安裝和配置 VNC 伺服器CentOSVNC伺服器
- 在linux centos伺服器上安裝telnet命令LinuxCentOS伺服器
- rman將一個庫遷移到另一個伺服器上伺服器
- linux下的syslog和/var/logLinux
- 解決syslog伺服器啟動問題伺服器
- Linux學習系列之一:在centos 7.5上安裝nginx 以及簡單配置LinuxCentOSNginx
- 我在 Linux 中使用的 5 個 Git 配置LinuxGit
- 在 Linux 上把 Vim 配置為預設編輯器Linux
- 在 Ubuntu 15.04 上配置 OpenVPN 伺服器和客戶端Ubuntu伺服器客戶端
- linux下一個網路卡配置多個IPLinux
- 【Linux】配置一個強大的Vim!!Linux