配置linux syslog日誌伺服器

2021-09-05 06:31:15 字數 4455 閱讀 6595

配置linux syslog日誌伺服器 目前,linux依舊使用syslogd作為日誌監控程序,而在主流的linux發行版中依舊使用syslog這個比較老的日誌伺服器套件。對syslog進行必要的配置能減少很多麻煩,並且可更有效的從系統日誌監控到系統的狀態。理解並完善乙個syslog的配置,對於系統管理員來說顯得尤為重要。

一、配置檔案

以紅旗dc server 5.0為例,預設的日誌伺服器就是sysklog套件:# rpm -qa|grep sysklogd

sysklogd-1.4.1-26_el

其主要的配置檔案有兩個:

/etc/sysconfig/syslog這裡定義syslog服務啟動時可加入的引數。

/etc/syslog.conf這個是syslog服務的主要配置檔案,根據定義的規則導向日誌資訊。

二、設定主配置檔案

/etc/syslog.conf根據如下的格式定義規則:

facility.level action

裝置.優先順序 動作facility.level 欄位也被稱為seletor(選擇條件),選擇條件和動作之間用空格或tab分割開。

#號開頭的是注釋,空白行會自動跳過。

1、facility

facility定義日誌訊息的範圍,其可使用的key有:auth -由 pam_pwdb 報告的認證活動。

authpriv -包括特權資訊如使用者名稱在內的認證活動

cron -與 cron 和 at 有關的計畫任務資訊。

daemon -與 inetd 守護程序有關的後台程序資訊。

kern -核心資訊,首先通過 klogd 傳遞。

lpr -與列印服務有關的資訊。

mail -與電子郵件有關的資訊

mark - syslog內部功能用於生成時間戳

news -來自新聞伺服器的資訊

syslog -由 syslog 生成的資訊

user -由使用者程式生成的資訊

uucp -由 uucp 生成的資訊

local0-local7 -與自定義程式使用

* 萬用字元代表除了 mark 以外的所有功能除mark為內部使用外,還有security為乙個舊的key定義,等同於auth,已經不再建議使用。

2、level級別

level定義訊息的緊急程度。按嚴重程度由高到低順序排列為:emerg -該系統不可用,等同panic

alert -需要立即被修改的條件

crit -阻止某些工具或子系統功能實現的錯誤條件

err -阻止工具或某些子系統部分功能實現的錯誤條件,等同error

warning -預警資訊,等同warn

notice -具有重要性的普通條件

info -提供資訊的訊息

debug -不包含函式條件或問題的其他資訊

none -沒有重要級,通常用於排錯

* 所有級別,除了none其中,panic、error、warn均為舊的識別符號,不再建議使用。

在定義level級別的時候,需要注意兩點:1)優先順序是由應用程式在程式設計的時候已經決定的,除非修改原始碼再編譯,否則不能改變訊息的優先順序;

2)低的優先順序包含高優先順序,例如,為某個應用程式定義info的日誌導向,則涵蓋notice、warning、err、crit、alert、emerg等訊息。(除非使用=號定義)3、selector選擇條件

通過小數點符號「.」把facility和level連線在一起則成為selector(選擇條件)。

可以使用分號「;」同時定義多個選擇條件。也支援三個修飾符:* - 所有日誌資訊

= 等於,即僅包含本優先順序的日誌資訊

! = 不等於,本優先順序日誌資訊除外

4、action動作

由前面選擇條件定義的日誌資訊,可執行下面的動作:file-指定日誌檔案的絕對路徑

terminal 或 print -傳送到序列或並行裝置標誌符,例如/dev/ttys2

@host -遠端的日誌伺服器

username -傳送資訊本機的指定使用者資訊視窗中,但該使用者必須已經登陸到系統中

named pipe -傳送到預先使用 mkfifo 命令來建立的 fifo 檔案的絕對路徑※注意,不能通過「|/var/***.sh」方式導向日誌到其他指令碼中處理。

5、舉例

例如:*.info;mail.none;news.none;authpriv.none;cron.none              /var/log/messages

#把除郵件、新聞組、授權資訊、計畫任務等外的所有通知性訊息都寫入messages檔案中。

mail,news.=info              /var/adm/info

#把郵件、新聞組中僅通知性訊息寫入info檔案,其他資訊不寫入。

mail.*;mail.!=info          /var/adm/mail

#把郵件的除通知性訊息外都寫入mail檔案中。

mail.=info                /dev/tty12

#僅把郵件的通知性訊息傳送到tty12終端裝置

*.alert                  root,joey

#如果root和joey使用者已經登陸到系統,則把所有緊急資訊通知他們

*.*                          @finlandia

#把所有資訊都導向到finlandia主機(通過/etc/hosts或dns解析其ip位址)

※注意:每條訊息均會經過所有規則的,並不是唯一匹配的。

也就是說,假設mail.=info資訊通過上面範例中定義的規則時,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主機都會收到相同的資訊。

這樣看上去比較煩瑣,但可以帶來的好處就是保證了資訊的完整性,可供不同地方進行分析。

6、測試

部分情況下,上述規的實際執行結果和定義的預想結果可能會有出入。這時,可使用logger程式輔助測試:

# logger -p user.notice 'hello world!'

日誌顯示:

nov 12 13:40:04 dc5test root: hello world!

其表示意思如下:

第一列:日誌產生時間

第二列:產生此日誌的主機名稱

第三列:產生此日誌的應用程式或使用者名稱

第四列:日誌資訊7、自定義日誌級別

正如前面所說的,應用程式的日誌級別是由應用程式所決定的。部分應用程式可通過配置,定義其日誌級別。

例如,/etc/ssh/sshd_config檔案中就有:#

syslogfacility auth

syslogfacility authpriv

#loglevel info

把sshd的日誌定義在authpriv.info級別。

配合syslog.conf中的:

authpriv.* /var/log/secure

則日誌檔案被寫入/var/log/secure檔案中。

我們修改為:syslogfacility local0

配合在syslog.conf中增加:

local0.* /var/log/sshd.log

儲存後,重新啟動sshd或syslog服務,則以後sshd服務的所有日誌都會單獨的放到 sshd.log檔案中了。

三、設定服務引數

預設情況下,syslog程序是不能接受其他日誌伺服器發過來的訊息的。而通過修改其啟動引數,可實現日誌的大集中功能。

修改/etc/sysconfig/syslog檔案:

-r : 開啟接受外來日誌訊息的功能,其監控514 udp埠;

-x : 關閉自動解析對方日誌伺服器的fqdn資訊,這能避免dns不完整所帶來的麻煩;

-m : 修改syslog的內部mark訊息寫入間隔時間(0為關閉),例如240為每隔240分鐘寫入一次「--mark--」資訊;

-h :預設情況下,syslog不會傳送從遠端接受過來的訊息到其他主機,而使用該選項,則把該開關開啟,所有接受到的資訊都可根據syslog.conf中定義的@主機**過去。

通過man syslogd可獲得更詳細的幫助,

而具體到實際配置檔案改為:

syslogd_options="-r-x-m 0"

儲存後,重啟服務即可:

# service syslog restart

此時,客戶機只要通過修改syslog.conf,在最後定義動作為@主機或ip,即可傳送日誌資訊到本伺服器中。

*.*                              @192.168.22.100

這地方也可以用 @name 不過這個name要在 /etc/hosts 中指定ip位址

(在構建集中的日誌伺服器時,請務必配合ntp時間服務,以保證資訊的有效性,避免不必要的麻煩)

另外,/etc/sysconfig/syslog配置檔案中,還定義有klogd服務的啟動引數:

klogd_options="-x"詳細幫助,請參考man 8 klogd或man klogd。

Linux syslog日誌伺服器架設攻略

從目前的情況來看,syslog 系統日誌 這一歷史悠久的日誌系統仍舊佔據著最主流的地位。由於與類 unix平台之間的淵源,syslog是在實際應用環境中最容易獲得的日誌系統。同時,還有很多的基於syslog的擴充套件產品存在,這其中也包括大量基於unix平台構建核心的網路硬體裝置,這些裝置往往都內建...

linux syslog日誌伺服器的搭建

首先我們知道日誌是什麼,日誌毫無疑問就跟我們寫日記一樣記錄我們每天做的一些事情,那麼日誌對於一台伺服器而言是至關重要的,比如說我們搭建服務的時候,服務起不來也沒提示錯誤資訊,那麼這個時候就可以檢視日誌來排錯了,還記錄了伺服器的運 況已經入侵記錄等等.那麼我們知道一台伺服器的日誌預設是存放在本地的對於...

linux syslog 呼叫介面

在實際的使用過程中,我們可以通過配置檔案和檢視相應的日誌檔案來使用syslog。然而,在許多應用場景下,我們往往需要通過程式產生輸出資訊並進行記錄,也就是說要把一些資訊寫成日誌檔案,正常情況下執行程式的人不用關心日誌裡的內容,只有在出現問題的時候才會檢視日誌檔案裡的內容以確定問題所在。因此,下面將詳...