作者:
華江
從目前的情況來看,Syslog(系統(tǒng)日志)這一歷史悠久的日志系統(tǒng)仍舊占據(jù)著最主流的地位。由于與類 UNIX平臺(tái)之間的淵源,Syslog是在實(shí)際應(yīng)用環(huán)境中最容易獲得的日志系統(tǒng)。 同時(shí),還有很多的基于Syslog的擴(kuò)展產(chǎn)品存在,這其中也包括大量基于UNIX平臺(tái)構(gòu)建內(nèi)核的 網(wǎng)絡(luò) 硬件設(shè)備,這些設(shè)備往往都內(nèi)置了Syslog功能支持,例如Cisco 路由器 就是如此。
一、 配置syslog守護(hù)進(jìn)程
syslog是Linux系統(tǒng)默認(rèn)的日志守護(hù)進(jìn)程。默認(rèn)的syslog配置文件是/etc/syslog.conf文件。syslog守護(hù)進(jìn)程是可配置 的,它允許人們?yōu)槊恳环N類型的系統(tǒng)信息精確地指定一個(gè)存放地點(diǎn)。現(xiàn)在,我們先看看syslog.conf文件的配置行格式(這個(gè)文件里的每一個(gè)配置行都是 同樣的格式),然后再看一個(gè)完整的syslog配置文件。syslog配置行的格式如下所示:
mail.*/var/log/mail
這一行由兩個(gè)部分組成。第一個(gè)部分是一個(gè)或多個(gè)“選擇條件”;上例中的選擇條件是“mail”。選擇條件后面跟一些空格字符,然后是一個(gè)“操作動(dòng)作”;上例中的操作動(dòng)作是:/var/log/mail
1選擇條件
選擇條件本身分為兩個(gè)字段,之間用一個(gè)小數(shù)點(diǎn)(.)分隔。前一字段是一項(xiàng)服務(wù),后一字段是一個(gè)優(yōu)先級(jí)。選擇條件其實(shí)是對(duì)消息類型的一種分類,這種分類便于 人們把不同類型的消息發(fā)送到不同的地方。在同一個(gè)syslog配置行上允許出現(xiàn)一個(gè)以上的選擇條件,但必須用分號(hào)(;)把它們分隔開。上面給出的例子里只 有一個(gè)選擇條件“mail”。大家可以在我們后面給出的那個(gè)完整的syslog配置文件示例里看到同時(shí)有多個(gè)選擇條件的配置行。表1列出了絕大多數(shù) Linux 操作系統(tǒng) 變體都可以識(shí)別的選擇條件。
2 優(yōu)先級(jí)
優(yōu)先級(jí)是選擇條件的第二個(gè)字段,它代表消息的緊急程度。對(duì)一個(gè)應(yīng)用程序來說,它發(fā)出的哪些消息屬于哪一種優(yōu)先級(jí)是由當(dāng)初編寫它的程序員決定的,應(yīng)用程序的 使用者只能接受這樣的安排——除非打算重新編譯系統(tǒng)應(yīng)用程序。表2按嚴(yán)重程度由低到高的順序列出了所有可能的優(yōu)先級(jí)。
3優(yōu)先級(jí)限定符
syslog允許人們使用三種限定符對(duì)優(yōu)先級(jí)進(jìn)行修飾:星號(hào)(*)、等號(hào)(=)和嘆號(hào)(!)。熟悉規(guī)則表達(dá)式的讀者應(yīng)該對(duì)這三種限定符不會(huì)感到陌生。星號(hào) (*)的含義是“把本項(xiàng)服務(wù)生成的所有日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn)”。就像它在規(guī)則表達(dá)式里的作用一樣,星號(hào)代表“任何東西”。在前面給出的例子 里,“mail.*”將把所有優(yōu)先級(jí)的消息都發(fā)送到操作動(dòng)作指定的/var/log/mail文件里。使用“*”限定符與使用“debug”優(yōu)先級(jí)的效果 完全一樣,后者也將把所有類型的消息發(fā)送到指定地點(diǎn)。
等號(hào)(=)的含義是“只把本項(xiàng)服務(wù)生成的本優(yōu)先級(jí)的日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn)”。比如說,可以用“=”限定符只發(fā)送調(diào)試消息而不發(fā)送其他更緊急的消息(這將為應(yīng)用程序減輕很多負(fù)擔(dān))。當(dāng)你只需要發(fā)送特定優(yōu)先級(jí)別的消息時(shí),就要使用等號(hào)限定符。
就像它在編程時(shí)的用法一樣,等號(hào)意味著等于且僅等于。嘆號(hào)(!)的含義是“把本項(xiàng)服務(wù)生成的所有日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn),但本優(yōu)先級(jí)的消息不 包括在內(nèi)”。比如說,這條syslog配置行將把除info優(yōu)先級(jí)以外的所有消息發(fā)送到/var/log/mail文件里:
mail.*;mail.!info/var/log/mail
在這個(gè)例子里,“mail.*”將發(fā)送所有的消息,但“mail.!info”卻把info優(yōu)先級(jí)的消息排除在外。就像它在編程時(shí)的用法一樣,嘆號(hào)意味著“非”。
4 操作動(dòng)作
日志信息可以分別記錄到多個(gè)文件里,還可以發(fā)送到命名管道、其他程序甚至另一臺(tái)機(jī)器。syslog配置文件并不復(fù)雜,既容易閱讀又容易操作使用。這個(gè)文件里的注釋都非常有用,應(yīng)該好好讀讀它們.
二、 建立一個(gè)中央日志 服務(wù)器
1建立中央日志 服務(wù)器 前的準(zhǔn)備工作
配置良好的 網(wǎng)絡(luò) 服 務(wù)(DNS和NTP)有助于提高日志記錄工作的精確性。在默認(rèn)情況下,當(dāng)有其他機(jī)器向自己發(fā)送日志消息時(shí),中央日志服務(wù)器將嘗試解析該機(jī)器的FQDN (fullyqualifieddomainname,完整域名)。(你可以在配置中央服務(wù)器時(shí)用“-x”選項(xiàng)禁止它這樣做。)如果syslog守護(hù)進(jìn)程 無法解析出那個(gè)地址,它將繼續(xù)嘗試,這種毫無必要的額外負(fù)擔(dān)將大幅降低日志記錄工作的效率。類似地,如果你的各個(gè)系統(tǒng)在時(shí)間上不同步,中央日志服務(wù)器給某 個(gè)事件打上的時(shí)間戳就可能會(huì)與發(fā)送該事件的那臺(tái)機(jī)器打上的時(shí)間戳不一致,這種差異會(huì)在你對(duì)事件進(jìn)行排序分析時(shí)帶來很大的困擾;對(duì)網(wǎng)絡(luò)時(shí)間進(jìn)行同步有助于保 證日志消息的時(shí)間準(zhǔn)確性。如果想消除這種時(shí)間不同步帶來的麻煩,先編輯/etc/ntp.conf文件,使其指向一個(gè)中央時(shí)間源,再安排ntpd守護(hù)進(jìn)程 隨系統(tǒng)開機(jī)啟動(dòng)就可以了。
2配置一個(gè)中央日志服務(wù)器
只須稍加配置,就可以用syslog實(shí)現(xiàn)一個(gè)中央日志服務(wù)器。任何一臺(tái)運(yùn)行syslog守護(hù)進(jìn)程的服務(wù)器都可以被配置成接受來自另一臺(tái)機(jī)器的消息,但這個(gè) 選項(xiàng)在默認(rèn)情況下是禁用的。在后面的討論里,如無特別說明,有關(guān)步驟將適用于包括SUSE和RedHat在內(nèi)的大多數(shù)Linux發(fā)行版本。我們先來看看如 何激活一個(gè)syslog服務(wù)器接受外來的日志消息:
1. 編輯/etc/sysconfig/syslog文件。
在“SYSLOGD_OPTIONS”行上加“-r”選項(xiàng)以允許接受外來日志消息。如果因?yàn)殛P(guān)于其他機(jī)器的DNS記錄項(xiàng)不夠齊全或其他原因不想讓中央日志 服務(wù)器解析其他機(jī)器的FQDN,還可以加上“-x”選項(xiàng)。此外,你或許還想把默認(rèn)的時(shí)間戳標(biāo)記消息(--MARK--)出現(xiàn)頻率改成比較有實(shí)際意義的數(shù) 值,比如240,表示每隔240分鐘(每天6次)在日志文件里增加一行時(shí)間戳消息。日志文件里的“--MARK--”消息可以讓你知道中央日志服務(wù)器上的 syslog守護(hù)進(jìn)程沒有停工偷懶。按照上面這些解釋寫出來的配置行應(yīng)該是如下所示的樣子:
SYSLOGD_OPTIONS="-r-x-m240"
2.重新啟動(dòng)syslog守護(hù)進(jìn)程。修改只有在syslog守護(hù)進(jìn)程重新啟動(dòng)后才會(huì)生效。如果你只想重新啟動(dòng)syslog守護(hù)進(jìn)程而不是整個(gè)系統(tǒng),在RedHat機(jī)器上,執(zhí)行以下兩條命令之一:
/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart
/etc/rc.d/init.d/syslogrestart
3.如果這臺(tái)機(jī)器上運(yùn)行著iptables防火墻或TCPWrappers,請(qǐng)確保它們?cè)试S514號(hào)端口上的連接通過。syslog守護(hù)進(jìn)程要用到514號(hào)端口。
4為中央日志服務(wù)器配置各客戶機(jī)器
讓客戶機(jī)把日志消息發(fā)往一個(gè)中央日志服務(wù)器并不困難。編輯客戶機(jī)上的/etc/syslog.conf文件,在有關(guān)配置行的操作動(dòng)作部分用一個(gè)“@”字符指向中央日志服務(wù)器,如下所示:
authpriv.*@192.168.1.40
另一種辦法是在DNS里定義一個(gè)名為“l(fā)oghost”的機(jī)器,然后對(duì)客戶機(jī)的syslog配置文件做如下修改(這個(gè)辦法的好處是:當(dāng)你把中央日志服務(wù)器換成另一臺(tái)機(jī)器時(shí),不用再修改每一個(gè)客戶機(jī)上的syslog配置文件):
authpriv.*@loghost
接下來,重新啟動(dòng)客戶機(jī)上的syslog守護(hù)進(jìn)程讓修改生效。讓客戶機(jī)在往中央日志服務(wù)器發(fā)送日志消息的同時(shí)繼續(xù)在本地進(jìn)行日志工作仍有必要,起碼在調(diào)試客戶機(jī)的時(shí)候不必到中央日志服務(wù)器查日志,在中央日志服務(wù)器出問題的時(shí)候還可以幫助調(diào)試。
從目前的情況來看,Syslog(系統(tǒng)日志)這一歷史悠久的日志系統(tǒng)仍舊占據(jù)著最主流的地位。由于與類 UNIX平臺(tái)之間的淵源,Syslog是在實(shí)際應(yīng)用環(huán)境中最容易獲得的日志系統(tǒng)。 同時(shí),還有很多的基于Syslog的擴(kuò)展產(chǎn)品存在,這其中也包括大量基于UNIX平臺(tái)構(gòu)建內(nèi)核的 網(wǎng)絡(luò) 硬件設(shè)備,這些設(shè)備往往都內(nèi)置了Syslog功能支持,例如Cisco 路由器 就是如此。
一、 配置syslog守護(hù)進(jìn)程
syslog是Linux系統(tǒng)默認(rèn)的日志守護(hù)進(jìn)程。默認(rèn)的syslog配置文件是/etc/syslog.conf文件。syslog守護(hù)進(jìn)程是可配置 的,它允許人們?yōu)槊恳环N類型的系統(tǒng)信息精確地指定一個(gè)存放地點(diǎn)。現(xiàn)在,我們先看看syslog.conf文件的配置行格式(這個(gè)文件里的每一個(gè)配置行都是 同樣的格式),然后再看一個(gè)完整的syslog配置文件。syslog配置行的格式如下所示:
mail.*/var/log/mail
這一行由兩個(gè)部分組成。第一個(gè)部分是一個(gè)或多個(gè)“選擇條件”;上例中的選擇條件是“mail”。選擇條件后面跟一些空格字符,然后是一個(gè)“操作動(dòng)作”;上例中的操作動(dòng)作是:/var/log/mail
1選擇條件
選擇條件本身分為兩個(gè)字段,之間用一個(gè)小數(shù)點(diǎn)(.)分隔。前一字段是一項(xiàng)服務(wù),后一字段是一個(gè)優(yōu)先級(jí)。選擇條件其實(shí)是對(duì)消息類型的一種分類,這種分類便于 人們把不同類型的消息發(fā)送到不同的地方。在同一個(gè)syslog配置行上允許出現(xiàn)一個(gè)以上的選擇條件,但必須用分號(hào)(;)把它們分隔開。上面給出的例子里只 有一個(gè)選擇條件“mail”。大家可以在我們后面給出的那個(gè)完整的syslog配置文件示例里看到同時(shí)有多個(gè)選擇條件的配置行。表1列出了絕大多數(shù) Linux 操作系統(tǒng) 變體都可以識(shí)別的選擇條件。
2 優(yōu)先級(jí)
優(yōu)先級(jí)是選擇條件的第二個(gè)字段,它代表消息的緊急程度。對(duì)一個(gè)應(yīng)用程序來說,它發(fā)出的哪些消息屬于哪一種優(yōu)先級(jí)是由當(dāng)初編寫它的程序員決定的,應(yīng)用程序的 使用者只能接受這樣的安排——除非打算重新編譯系統(tǒng)應(yīng)用程序。表2按嚴(yán)重程度由低到高的順序列出了所有可能的優(yōu)先級(jí)。
不同的服務(wù)類型有不同的優(yōu)先級(jí),數(shù)值較大的優(yōu)先級(jí)涵蓋數(shù)值較小的優(yōu)先級(jí)。如果某個(gè)選擇條件只給出了一個(gè)優(yōu)先級(jí)而沒有使用任何優(yōu)先級(jí)限定符,對(duì)應(yīng)于這個(gè)優(yōu)先 級(jí)的消息以及所有更緊急的消息類型都將包括在內(nèi)。比如說,如果某個(gè)選擇條件里的優(yōu)先級(jí)是“warning”,它實(shí)際上將把“warning”、 “err”、“crit”、“alert”和“emerg”都包括在內(nèi)。
3優(yōu)先級(jí)限定符
syslog允許人們使用三種限定符對(duì)優(yōu)先級(jí)進(jìn)行修飾:星號(hào)(*)、等號(hào)(=)和嘆號(hào)(!)。熟悉規(guī)則表達(dá)式的讀者應(yīng)該對(duì)這三種限定符不會(huì)感到陌生。星號(hào) (*)的含義是“把本項(xiàng)服務(wù)生成的所有日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn)”。就像它在規(guī)則表達(dá)式里的作用一樣,星號(hào)代表“任何東西”。在前面給出的例子 里,“mail.*”將把所有優(yōu)先級(jí)的消息都發(fā)送到操作動(dòng)作指定的/var/log/mail文件里。使用“*”限定符與使用“debug”優(yōu)先級(jí)的效果 完全一樣,后者也將把所有類型的消息發(fā)送到指定地點(diǎn)。
等號(hào)(=)的含義是“只把本項(xiàng)服務(wù)生成的本優(yōu)先級(jí)的日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn)”。比如說,可以用“=”限定符只發(fā)送調(diào)試消息而不發(fā)送其他更緊急的消息(這將為應(yīng)用程序減輕很多負(fù)擔(dān))。當(dāng)你只需要發(fā)送特定優(yōu)先級(jí)別的消息時(shí),就要使用等號(hào)限定符。
就像它在編程時(shí)的用法一樣,等號(hào)意味著等于且僅等于。嘆號(hào)(!)的含義是“把本項(xiàng)服務(wù)生成的所有日志消息都發(fā)送到操作動(dòng)作指定的地點(diǎn),但本優(yōu)先級(jí)的消息不 包括在內(nèi)”。比如說,這條syslog配置行將把除info優(yōu)先級(jí)以外的所有消息發(fā)送到/var/log/mail文件里:
mail.*;mail.!info/var/log/mail
在這個(gè)例子里,“mail.*”將發(fā)送所有的消息,但“mail.!info”卻把info優(yōu)先級(jí)的消息排除在外。就像它在編程時(shí)的用法一樣,嘆號(hào)意味著“非”。
4 操作動(dòng)作
日志信息可以分別記錄到多個(gè)文件里,還可以發(fā)送到命名管道、其他程序甚至另一臺(tái)機(jī)器。syslog配置文件并不復(fù)雜,既容易閱讀又容易操作使用。這個(gè)文件里的注釋都非常有用,應(yīng)該好好讀讀它們.
二、 建立一個(gè)中央日志 服務(wù)器
1建立中央日志 服務(wù)器 前的準(zhǔn)備工作
配置良好的 網(wǎng)絡(luò) 服 務(wù)(DNS和NTP)有助于提高日志記錄工作的精確性。在默認(rèn)情況下,當(dāng)有其他機(jī)器向自己發(fā)送日志消息時(shí),中央日志服務(wù)器將嘗試解析該機(jī)器的FQDN (fullyqualifieddomainname,完整域名)。(你可以在配置中央服務(wù)器時(shí)用“-x”選項(xiàng)禁止它這樣做。)如果syslog守護(hù)進(jìn)程 無法解析出那個(gè)地址,它將繼續(xù)嘗試,這種毫無必要的額外負(fù)擔(dān)將大幅降低日志記錄工作的效率。類似地,如果你的各個(gè)系統(tǒng)在時(shí)間上不同步,中央日志服務(wù)器給某 個(gè)事件打上的時(shí)間戳就可能會(huì)與發(fā)送該事件的那臺(tái)機(jī)器打上的時(shí)間戳不一致,這種差異會(huì)在你對(duì)事件進(jìn)行排序分析時(shí)帶來很大的困擾;對(duì)網(wǎng)絡(luò)時(shí)間進(jìn)行同步有助于保 證日志消息的時(shí)間準(zhǔn)確性。如果想消除這種時(shí)間不同步帶來的麻煩,先編輯/etc/ntp.conf文件,使其指向一個(gè)中央時(shí)間源,再安排ntpd守護(hù)進(jìn)程 隨系統(tǒng)開機(jī)啟動(dòng)就可以了。
2配置一個(gè)中央日志服務(wù)器
只須稍加配置,就可以用syslog實(shí)現(xiàn)一個(gè)中央日志服務(wù)器。任何一臺(tái)運(yùn)行syslog守護(hù)進(jìn)程的服務(wù)器都可以被配置成接受來自另一臺(tái)機(jī)器的消息,但這個(gè) 選項(xiàng)在默認(rèn)情況下是禁用的。在后面的討論里,如無特別說明,有關(guān)步驟將適用于包括SUSE和RedHat在內(nèi)的大多數(shù)Linux發(fā)行版本。我們先來看看如 何激活一個(gè)syslog服務(wù)器接受外來的日志消息:
1. 編輯/etc/sysconfig/syslog文件。
在“SYSLOGD_OPTIONS”行上加“-r”選項(xiàng)以允許接受外來日志消息。如果因?yàn)殛P(guān)于其他機(jī)器的DNS記錄項(xiàng)不夠齊全或其他原因不想讓中央日志 服務(wù)器解析其他機(jī)器的FQDN,還可以加上“-x”選項(xiàng)。此外,你或許還想把默認(rèn)的時(shí)間戳標(biāo)記消息(--MARK--)出現(xiàn)頻率改成比較有實(shí)際意義的數(shù) 值,比如240,表示每隔240分鐘(每天6次)在日志文件里增加一行時(shí)間戳消息。日志文件里的“--MARK--”消息可以讓你知道中央日志服務(wù)器上的 syslog守護(hù)進(jìn)程沒有停工偷懶。按照上面這些解釋寫出來的配置行應(yīng)該是如下所示的樣子:
SYSLOGD_OPTIONS="-r-x-m240"
2.重新啟動(dòng)syslog守護(hù)進(jìn)程。修改只有在syslog守護(hù)進(jìn)程重新啟動(dòng)后才會(huì)生效。如果你只想重新啟動(dòng)syslog守護(hù)進(jìn)程而不是整個(gè)系統(tǒng),在RedHat機(jī)器上,執(zhí)行以下兩條命令之一:
/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart
/etc/rc.d/init.d/syslogrestart
3.如果這臺(tái)機(jī)器上運(yùn)行著iptables防火墻或TCPWrappers,請(qǐng)確保它們?cè)试S514號(hào)端口上的連接通過。syslog守護(hù)進(jìn)程要用到514號(hào)端口。
4為中央日志服務(wù)器配置各客戶機(jī)器
讓客戶機(jī)把日志消息發(fā)往一個(gè)中央日志服務(wù)器并不困難。編輯客戶機(jī)上的/etc/syslog.conf文件,在有關(guān)配置行的操作動(dòng)作部分用一個(gè)“@”字符指向中央日志服務(wù)器,如下所示:
authpriv.*@192.168.1.40
另一種辦法是在DNS里定義一個(gè)名為“l(fā)oghost”的機(jī)器,然后對(duì)客戶機(jī)的syslog配置文件做如下修改(這個(gè)辦法的好處是:當(dāng)你把中央日志服務(wù)器換成另一臺(tái)機(jī)器時(shí),不用再修改每一個(gè)客戶機(jī)上的syslog配置文件):
authpriv.*@loghost
接下來,重新啟動(dòng)客戶機(jī)上的syslog守護(hù)進(jìn)程讓修改生效。讓客戶機(jī)在往中央日志服務(wù)器發(fā)送日志消息的同時(shí)繼續(xù)在本地進(jìn)行日志工作仍有必要,起碼在調(diào)試客戶機(jī)的時(shí)候不必到中央日志服務(wù)器查日志,在中央日志服務(wù)器出問題的時(shí)候還可以幫助調(diào)試。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

