Unix/Linux系統中的大部分日誌都是經過一種叫作syslog的機制產生和維護的。Syslog是一種標準協議,分爲客戶端和服務端,客戶端是產生日誌消息的一方,而服務器端負責接收客戶端發送來的日誌消息。數據庫
幾乎全部的網絡設備均可以經過syslog協議,將日誌信息經過UDP方式傳送到遠端服務器,遠端接收日誌服務器必須經過syslogd監聽UDP端口514。服務器
Linux系統根據 syslog.conf配置文件中的配置處理本機接收訪問系統的日誌信息,把指定的事件寫入特定文件中,供後臺數據庫管理和響應之用。網絡
Linux系統syslog配置文件:/etc/syslog.conf架構
配置格式:facility.level action函數
facility指syslog功能,及收集那些日誌主要有工具
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端口上。
配置實例
syslogd守護進程
syslogd –r:執行該命令後syslogd 將會監遵從 514 端口上進來的 UDP 包。
syslogd –h:執行該命令後syslogd日誌服務器能傳送日誌信息。
klogd守護進程
klogd 守護進程得到並記錄 Linux 內核信息。
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文件,在有關配置行的操做動做部分用一個「@」字符指向中央日誌服務器,例如:
2)另外一種辦法是在DNS裏定義一個名爲「loghost」的機器,而後對客戶機的syslog配置文件作以下修改(這個辦法的好處是:當你把中央日誌服務器換成另外一臺機器時,不用再修改每個客戶機上的syslog配置文件)
接下來,從新啓動客戶機上的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() 關閉日誌記錄。