syslog使用介紹

2021-06-27 21:01:47 字數 2786 閱讀 2965

syslog在網路管理中的應用

syslog是一種工業標準的協議,可用來記錄裝置的日誌。在unix系統,路由器、交換機等網路裝置中,系統日誌(system log)記錄系統中任何時間發生的大小事件。管理者可以通過檢視系統記錄,隨時掌握系統狀況。unix的系統日誌是通過syslogd這個程序記錄系統有關事件記錄,也可以記錄應用程式運作事件。通過適當的配置,我們還可以實現執行syslog協議的機器間通訊,通過分析這些網路行為日誌,藉以追蹤掌握與裝置和網路有關的狀況。

ubuntu下安裝syslog 

apt-get install

inetutils-syslogd

這裡面的三個函式openlog, syslog, closelog是一套系統日誌寫入介面。另外那個vsyslog和syslog功能一樣,只是引數格式不同。

通常,syslog守護程序讀取三種格式的記錄訊息。此守護程序在啟動時讀乙個配置檔案。一般來說,其檔名為/etc/syslog.conf,該檔案決定了不同種類的訊息應送向何處。例如,緊急訊息可被送向系統管理員(若已登入),並在控制台上顯示,而警告訊息則可記錄到乙個檔案中。該機制提供了 syslog函式,其呼叫格式如下

#include

void openlog (char*ident,int option ,int facility);

void syslog(int priority,char*format,……)

void closelog();

呼叫openlog是可選擇的。如果不呼叫openlog,則在第一次呼叫syslog時,自動呼叫openlog。呼叫closelog也是可選擇的,它只是關閉被用於與syslog守護程序通訊的描述符。呼叫openlog 使我們可以指定乙個ident,以後, 此ident 將被加至每則記錄訊息中。ident 一般是程式的名稱(例如 ,cron ,ine 等)

程式的用法示例**如下:

#include

int main(int argc, char **argv)

編譯生成可執行程式後,執行一次程式將向/var/log /message檔案新增一行資訊如下:

feb 12 08:48:38 localhost mymsgmark[7085]: this is a syslog test message generated by program './a.out'

syslog函式及引數

syslog函式用於把日誌訊息發給系統程式syslogd去記錄,此函式原型是:

void syslog(int priority, const char *format, ...);

第乙個引數是訊息的緊急級別,第二個引數是訊息的格式,之後是格式對應的引數。就是printf函式一樣使用。

如果我們的程式要使用系統日誌功能,只需要在程式啟動時使用openlog函式來連線 syslogd程式,後面隨時用syslog函式寫日誌就行了。

下面介紹在redhat和ubuntu中如何配置它:

ubuntu和紅帽常使用它,並且通過檔案/etc/rsyslog.conf進行管理。檔案中包含許多指定的特殊系統日誌:有的是控制台方面的,有的是檔案方面或其它主機的。

首先,我們需要載入合適的tcp和udp外掛程式以支援接收系統日誌。把下面的**新增到rsyslog.conf的頭部:

$modload imtcp

$modload imudp

$inputtcpserverrun 10514

$udpserverrun 514

載入的這兩個模組能支援監聽tcp和udp的埠,並且指定哪個埠來接受事件,在這種情況下,使用tcp的10514埠和udp的514埠。你需要確認一下本地防火牆(在你的主機和**系統日誌伺服器之間的防火牆)

下面我們需要指定一些規則來告訴rsyslog在哪放輸入事件。如果你不新增任何規則,輸入事件將按照本地的規則進行處理,並且與本地主機的事件交織在一起。我們需要在上面新增節之後和本地處理系統日誌之前來正確的指定這個規則,例如:

if $fromhost-ip isequal '192.168.0.2' then /var/log/192.168.0.2.log

& ~這裡我們說的每乙個來自於192.168.0.2的系統日誌都應該儲存在/var/log/192.168.0.2.log檔案中。&~這個符號是非常重要的,因為它告訴rsyslog將停止處理訊息。如果你把它忘寫了,訊息將越過下乙個規則,並且繼續處理。在這一規則中還有其他的變數。例如:

if $fromhost-ip startswith '192.168.' then /var/log/192.168.log

& ~這裡我們用192.168.*替代了以這個為開始的所有ip位址,寫入到/var/log/192.168.log檔案中。你還可以看到一些其它的過濾。

你將需要重啟這個rsyslog服務來啟用我們所做的新的配置:

$ sudo service rsyslog restart

現在,對於傳送方的主機,我們還需要對檔案rsyslog.conf進行一些更改,在檔案的頭部,新增下面這行:

*.* @@192.168.0.1:10514

這是傳送的所有事件,來自於所有源**和所有重要級別(用*.*),通過tcp協議傳給ip位址為192.168.0.1的10514埠。你可是用你所在環境的位址來替換這個ip位址。要啟用此配置,你將需要重啟主機上的rsyslog。

你可以通過ssl/tls更進一步地傳送你的系統日誌。如果你在網際網路上或其它網路間傳輸系統日誌,這也沒什麼壞處,你可能會發現這個的簡單說明。

現在,如果給你的配置管理系統(如果不使用這個,你可以試一試puppet或cfengine工具)新增這個配置,然後,您可以用適當的系統日誌來有效地配置每台主機,以確保你的日誌將被傳送到**系統日誌伺服器。

python使用syslog模組

syslog模組是在unix環境下工作的模組,不能用於windows,在windows環境下可以使用logging模組。syslog模組可以用於記錄系統執行的資訊,這個模組提供的方法有,syslog priority,message 它將message送入系統日誌,priority的預設選項為log...

syslog檢視與使用

syslog所產生的log檔案在 var log messages中,可直接cat檢視,也可使用dmesg檢視 syslogd記錄的資訊存放位置 var log messages 系統標準錯誤日誌資訊 大多數產生的錯誤資訊都在其中 非核心產生的引導資訊 如系統初始化資訊 各子系統產生的資訊。所以此檔...

syslog列印不帶等級 syslog日誌等級

設施.優先順序 facility.priority 設施 facility kern 0 核心日誌訊息 user 1 隨機的使用者日誌訊息 mail 2 郵件系統日誌訊息 daemon 3 系統守護程序日誌訊息 auth 4 安全管理日誌訊息 syslog 5 syslogd本身的日誌訊息 lpr ...