Linux syslog日誌服務器架設攻略

從目前的狀況來看,Syslog(系統日誌)這一歷史悠久的日誌系統仍舊佔據着最主流的地位。因爲與類 UNIX平臺之間的淵源,Syslog是在實際應用環境中最容易得到的日誌系統。 同時,還有不少的基於Syslog的擴展產品存在,這其中也包括大量基於UNIX平臺構建內核的網絡硬件設備,這些設備每每都內置了Syslog功能支持,例如Cisco路由器就是如此。程序員

1、 配置syslog守護進程編程

syslog是Linux系統默認的日誌守護進程。默認的syslog配置文件是/etc/syslog.conf文件。syslog守護進程是可配置的,它容許人們爲每一種類型的系統信息精確地指定一個存放地點。如今,咱們先看看syslog.conf文件的配置行格式(這個文件裏的每個配置行都是一樣的格式),而後再看一個完整的syslog配置文件。syslog配置行的格式以下所示:服務器

mail.*/var/log/mail網絡

這一行由兩個部分組成。第一個部分是一個或多個「選擇條件」;上例中的選擇條件是「mail」。選擇條件後面跟一些空格字符,而後是一個「操做動做」;上例中的操做動做是:/var/log/mailapp

1選擇條件dom

選擇條件自己分爲兩個字段,之間用一個小數點(.)分隔。前一字段是一項服務,後一字段是一個優先級。選擇條件實際上是對消息類型的一種分類,這種分類便於人們把不一樣類型的消息發送到不一樣的地方。在同一個syslog配置行上容許出現一個以上的選擇條件,但必須用分號(;)把它們分隔開。上面給出的例子裏只有一個選擇條件「mail」。你們能夠在咱們後面給出的那個完整的syslog配置文件示例裏看到同時有多個選擇條件的配置行。表1列出了絕大多數 Linux操做系統變體均可以識別的選擇條件。工具

2 優先級spa

優先級是選擇條件的第二個字段,它表明消息的緊急程度。對一個應用程序來講,它發出的哪些消息屬於哪種優先級是由當初編寫它的程序員決定的,應用程序的使用者只能接受這樣的安排——除非打算從新編譯系統應用程序。表2按嚴重程度由低到高的順序列出了全部可能的優先級。操作系統

不一樣的服務類型有不一樣的優先級,數值較大的優先級涵蓋數值較小的優先級。若是某個選擇條件只給出了一個優先級而沒有使用任何優先級限定符,對應於這個優先級的消息以及全部更緊急的消息類型都將包括在內。好比說,若是某個選擇條件裏的優先級是「warning」,它實際上將把「warning」、 「err」、「crit」、「alert」和「emerg」都包括在內。.net

3優先級限定符

syslog容許人們使用三種限定符對優先級進行修飾:星號(*)、等號(=)和歎號(!)。熟悉規則表達式的讀者應該對這三種限定符不會感到陌生。星號(*)的含義是「把本項服務生成的全部日誌消息都發送到操做動做指定的地點」。就像它在規則表達式裏的做用同樣,星號表明「任何東西」。在前面給出的例子裏,「mail.*」將把全部優先級的消息都發送到操做動做指定的/var/log/mail文件裏。使用「*」限定符與使用「debug」優先級的效果徹底同樣,後者也將把全部類型的消息發送到指定地點。

等號(=)的含義是「只把本項服務生成的本優先級的日誌消息都發送到操做動做指定的地點」。好比說,能夠用「=」限定符只發送調試消息而不發送其餘更緊急的消息(這將爲應用程序減輕不少負擔)。當你只須要發送特定優先級別的消息時,就要使用等號限定符。

就像它在編程時的用法同樣,等號意味着等於且僅等於。歎號(!)的含義是「把本項服務生成的全部日誌消息都發送到操做動做指定的地點,但本優先級的消息不包括在內」。好比說,這條syslog配置行將把除info優先級之外的全部消息發送到/var/log/mail文件裏:

mail.*;mail.!info/var/log/mail

在這個例子裏,「mail.*」將發送全部的消息,但「mail.!info」卻把info優先級的消息排除在外。就像它在編程時的用法同樣,歎號意味着「非」。

4 操做動做

日誌信息能夠分別記錄到多個文件裏,還能夠發送到命名管道、其餘程序甚至另外一臺機器。syslog配置文件並不複雜,既容易閱讀又容易操做使用。這個文件裏的註釋都很是有用,應該好好讀讀它們。

2、 創建一箇中央日誌服務器

1創建中央日誌服務器前的準備工做

配置良好的網絡服務(DNS和NTP)有助於提升日誌記錄工做的精確性。在默認狀況下,當有其餘機器向本身發送日誌消息時,中央日誌服務器將嘗試解析該機器的FQDN(fullyqualifieddomainname,完整域名)。(你能夠在配置中央服務器時用「-x」選項禁止它這樣作。)若是 syslog守護進程沒法解析出那個地址,它將繼續嘗試,這種毫無必要的額外負擔將大幅下降日誌記錄工做的效率。相似地,若是你的各個系統在時間上不一樣步,中央日誌服務器給某個事件打上的時間戳就可能會與發送該事件的那臺機器打上的時間戳不一致,這種差別會在你對事件進行排序分析時帶來很大的困擾;對網絡時間進行同步有助於保證日誌消息的時間準確性。若是想消除這種時間不一樣步帶來的麻煩,先編輯/etc/ntp.conf文件,使其指向一箇中央時間源,再安排ntpd守護進程隨系統開機啓動就能夠了。

2配置一箇中央日誌服務器

只須稍加配置,就能夠用syslog實現一箇中央日誌服務器。任何一臺運行syslog守護進程的服務器均可以被配置成接受來自另外一臺機器的消息,但這個選項在默認狀況下是禁用的。在後面的討論裏,如無特別說明,有關步驟將適用於包括SUSE和RedHat在內的大多數Linux發行版本。咱們先來看看如何激活一個syslog服務器接受外來的日誌消息:

1. 編輯/etc/sysconfig/syslog文件。

在「SYSLOGD_OPTIONS」行上加「-r」選項以容許接受外來日誌消息。若是由於關於其餘機器的DNS記錄項不夠齊全或其餘緣由不想讓中央日誌服務器解析其餘機器的FQDN,還能夠加上 「-x」選項。此外,你或許還想把默認的時間戳標記消息(--MARK--)出現頻率改爲比較有實際意義的數值,好比240,表示每隔240分鐘(天天6 次)在日誌文件裏增長一行時間戳消息。日誌文件裏的「--MARK--」消息可讓你知道中央日誌服務器上的syslog守護進程沒有停工偷懶。按照上面這些解釋寫出來的配置行應該是以下所示的樣子:

SYSLOGD_OPTIONS="-r-x-m240"

2.從新啓動syslog守護進程。修改只有在syslog守護進程從新啓動後纔會生效。若是你只想從新啓動syslog守護進程而不是整個系統,在RedHat機器上,執行如下兩條命令之一:

/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart

/etc/rc.d/init.d/syslogrestart

3.若是這臺機器上運行着iptables防火牆或TCPWrappers,請確保它們容許514號端口上的鏈接經過。syslog守護進程要用到514號端口。

4爲中央日誌服務器配置各客戶機器

讓客戶機把日誌消息發往一箇中央日誌服務器並不困難。編輯客戶機上的/etc/syslog.conf文件,在有關配置行的操做動做部分用一個「@」字符指向中央日誌服務器,以下所示:

authpriv.*@192.168.1.40

另外一種辦法是在DNS裏定義一個名爲「loghost」的機器,而後對客戶機的syslog配置文件作以下修改(這個辦法的好處是:當你把中央日誌服務器換成另外一臺機器時,不用再修改每個客戶機上的syslog配置文件):

authpriv.*@loghost

接下來,從新啓動客戶機上的syslog守護進程讓修改生效。讓客戶機在往中央日誌服務器發送日誌消息的同時繼續在本地進行日誌工做仍有必要,起碼在調試客戶機的時候沒必要到中央日誌服務器查日誌,在中央日誌服務器出問題的時候還能夠幫助調試。

總結:日誌系統承擔着整個信息基礎設施中感受器官的做用,一個完善的、工做良好的體系須要在正確的地點部署日誌採集工具。後邊筆者會介紹syslog的加強版本syslog-ng

相關文章
相關標籤/搜索