syslog日誌

1.  架構介紹

Unix/Linux系統中的大部分日誌都是經過一種叫作syslog的機制產生和維護的。Syslog是一種標準協議,分爲客戶端和服務端,客戶端是產生日誌消息的一方,而服務器端負責接收客戶端發送來的日誌消息。數據庫

幾乎全部的網絡設備均可以經過syslog協議,將日誌信息經過UDP方式傳送到遠端服務器,遠端接收日誌服務器必須經過syslogd監聽UDP端口514。服務器

Linux系統根據 syslog.conf配置文件中的配置處理本機接收訪問系統的日誌信息,把指定的事件寫入特定文件中,供後臺數據庫管理和響應之用。網絡

2.  Syslog配置

Linux系統syslog配置文件:/etc/syslog.conf架構

配置格式:facility.level                                         action函數

facilitysyslog功能,及收集那些日誌主要有工具

kern:內核信息,首先經過klogd傳遞;測試

user:用戶進程;spa

mail:郵件;debug

daemon:後臺進程;調試

authpriv:受權信息;

syslog:系統日誌;

lpr:打印信息;

news:新聞組信息;

uucp:由uucp生成的信息;

cron:計劃和任務信息;

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

local0---local7:自定義程序使用;

*:     通配符表明除了mark之外的全部功能。

level指定syslog優先級

emerg/panic:「該系統不可用」(最緊急消息)

alert:須要當即被修改的條件(緊急消息)

crit:阻止工具或子系統功能實現的錯誤條件(重要消息)

err: 阻止工具或子系統部分功能實現的錯誤條件(出錯消息)

warning: 預警信息(警告消息)

notice: 具備重要性的普通條件(普通但重要的消息)

info: 提供信息的消息(通知性消息)

debug: 不包含函數條件或問題的其餘信息(調試級-信息量最多)

none: 沒有重要級,一般用於排錯(不記錄任何日誌消息)

*: 全部級別,除了none

action指定記錄日誌活動

1.       /var/log/lastlog:記錄每一個使用者最近簽入系統的時間,能夠經過lastlog命令讀取。(root用戶最近登錄信息:lastlog -u root)

2.       /var/run/utmp:記錄每一個用戶簽入系統的時間, who, users, finger 等指令會查這個檔案。

3.       /var/log/wtmp:記錄每一個使用者簽入及簽出的時間, last 這個指令會查這個檔案. 這個檔案也記錄 shutdown 及 reboot 的動做。

4.       /var/log/secure:登錄系統的信息。

5.       /var/log/maillog:記錄sendmail和pop等相關訊息。

6.       /var/log/cron : 記錄 crontab 的相關訊息 ,定時器的信息。

7.        /var/log/dmesg : /bin/dmesg 會將這個檔案顯示出來, 它是開機時的畫面訊息。

8.       /var/log/xferlog : 記錄那些位址來 ftp 拿取那些檔案。

9.       /var/log/messages : 系統大部份的訊息皆記錄在此, 包括 login, check password , failed login, ftp, su 等。

10.   @192.168.0.1:UDP發送到指定syslog服務端的514端口上。

配置實例

3.  日誌管理

syslogd守護進程

syslogd –r:執行該命令後syslogd 將會監遵從 514 端口上進來的 UDP 包。

syslogd –h:執行該命令後syslogd日誌服務器能傳送日誌信息。

klogd守護進程

klogd 守護進程得到並記錄 Linux 內核信息。

 

4.  配置一箇中央日誌服務器

1.     編輯服務器syslog配置文件

編輯/etc/sysconfig/syslog文件,配置「SYSLOGD_OPTIONS」如:SYSLOGD_OPTIONS="-r-x-m240",-r表示容許接受外來日誌,-x表示不起解析其餘機器的FQDN,-m240表示每一個240分鐘在日誌文件中出現一次時間戳標誌信息。

2.     重啓syslogd守護進程

/etc/rc.d/init.d/syslog stop;   /etc/rc.d/init.d/syslog start

或者

/etc/rc.d/init.d/syslog restart

3.     運行514端口經過防火牆

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

        1)編輯客戶機上的/etc/syslog.conf文件,在有關配置行的操做動做部分用一個「@」字符指向中央日誌服務器,例如:

authpriv.*        @192.168.1.40

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

authpriv.*       @loghost

        接下來,從新啓動客戶機上的syslog守護進程讓修改生效。

測試日誌收集

在客戶機上面配置好:

/etc/syslog.conf

重啓守護進程

/etc/rc.d/init.d/syslog restart

而後咱們再編寫一個c程序用來產生日誌消息

先對程序進行編譯gcc -o syslog syslog.c

而後運行程序./syslog

而後咱們進入服務器端查看配置,除了mail/authpriv等信息都會被記錄到/var/log/messages日誌中。

查看/var/log/messages日誌。

到這裏咱們配置以及完成了測試成功。

下面看一下c程序中用到的方法和參數。

方法:openlog()3個參數

第一個參數:日誌記錄標誌字符串。

第二個參數:下面標誌位組合

LOG_CONS:日誌信息在寫給日誌服務器的同時打印到終端
       LOG_NDELAY:當即記錄日誌
       LOG_PERROR:把日誌信息也輸出到標準錯誤流
       LOG_PID:在標誌字段中記錄進程的PID值

第三個參數:說明日誌類型(跟咱們配置的news類型消息發送到服務器端對應)

方法syslog()

第一個參數:日誌級別

   第二個之後的參數:相似於pringf方法相似,輸出日誌內容。

方法closelog() 關閉日誌記錄。

相關文章
相關標籤/搜索