菜鳥學Linux 第038篇筆記 日誌系統 syslogd,klogd
Linux上的日誌系統
syslog 開源
syslog-ng 商業版
日誌系統 syslog
syslog 服務
syslogd 進程
klogd 進程
配置文件:/etc/syslog.conf
klogd 內核,專門負責記錄內核產生的日誌信息
kernel --> 物理終端(/dev/console) --> /var/log/dmesg
# dmesg
# cat /var/log/dmesg
syslogd 系統,非內核產生的信息
/sbin/init
/var/log/messages 系統標準錯誤日誌信息,
非內核產生引導信息;
各子系統所產生的信息
/var/log/maillog 郵件系統產生的日誌信息
/var/log/secure 登錄信息,該文件權限特殊,你懂得
日誌需要滾動(日誌切割)
messages messages.1 messages.2
logrotate (rotates, compresses, and mails system logs)
信息詳細程度:日誌級別
子系統:facility, 設施
動作: action
/etc/syslog.conf
配置文件定義格式: facility.priority action
facility,可以理解爲日誌的來源或設備,目前常用的facility有以下幾種
auth # 認證相關的
authpriv # 權限,授權相關的
cron # 任務計劃相關的
daemon # 守護進程相關的
kern # 內核相關的
lpr # 打印相關的
mail # 郵件相關的
mark # 標記相關的
news # 新聞相關的
security # 安全相關的
syslog # syslog 自己
user # 用戶相關
uucp # unix to unix cp 相關的
local10 到 local17 # 用戶自定義
* # *表示所有的facility
priority(log level)日誌的級別,一般有以下幾種級別(從低到高)
debug # 程序或系統的調試信息
info # 一般信息
notice # 不影響正常功能,需要注意的信息
warning/warn # 可能影響系統功能,需要提醒用戶的重要事件
err/error # 錯誤信息
crit # 比較嚴重crit(暴擊,臨界)
alert # 必須馬上處理alert
emerg/panic # emergency 會導致系統不可用的
* # 表示所有的日誌級別
none # 跟*相反,表示啥也沒有
action(動作)日誌記錄的位置
系統上的絕對路徑 # 普通文件 如:/var/log/XXX
| # 管道 通過管道送給其它的命令處理
terminal # 終端 如:/dev/console
@HOST # 遠程主機 如:@10.0.0.1
user # 系統用戶 如: root
* # 登錄到系統上的所有用戶,
# 一般emerg級別的日誌是這樣定義的
-/PATH # 表示異步寫入,沒有表示同步寫入到磁盤
定義格式e.g.
facility.priority action
mail.info /var/log/mail.log # 表示將mail相關的,級別爲info及info以上級別的
# 信息記錄到/var/log/mail.log文件中
auth.=info @10.0.0.1 # 表示將auth相關的,級別爲info的信息記錄到
# IP主機上,前提該主機接收其它主機發來的日誌消息
user.!=error # 記錄user相關的,不包括error級別的信息
user.!error # 與user.error相反
*.info # 記錄所有facility,info及info以上級別消息
mail.* # 表示記錄mail相關的所有級別信息
*.* # 你懂得
cron.info;mail.info # 多個日誌來源可以用“;"隔開
cron,mail.info # 與cron.info;mail.info含義相同
mail.*;mail.!=info # 記錄mail相關的所有級別,但不包括info級別
如果修改了syslog配置文件/etc/syslog.conf
建議使用service syslog reload 來重新加載配置文件
而非使用service syslog restart此種方式,有可能會丟失正常記錄的日誌信息
reload = SIGHUP
如要接收遠程主機所發來的日誌信息
由修改/etc/sysconfig/syslog文件
SYSLOGD_OPTIONS="-m 0" 將此項變爲 SYSLOGD_OPTIONS="-r -m 0" 建議最好重啓服務
小系統啓用日誌功能
/etc/rc.d/rc.sysinit
syslogd
klogd
/etc/syslog.conf
*.info;auth.none /var/log/messages
auth.* /var/log/secure
touch /var/log/secure
chmod 600 /var/log/secure