歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 日志系統組成詳解

Linux 日志系統組成詳解

日期:2017/2/28 14:30:53   编辑:Linux教程

Linux 日志系統有三部分組成:

一、使用什麼工具記錄系統產生的日志信息?
syslog服務腳本管理的兩個進程: syslogd、klogd 來記錄系統產生的日志信息;
klogd 進程是專門為內核產生的日志信息服務的。
syslogd 進程是專門為應用程序服務(除了內核)產生的日志信息服務的;
只有調用了 logger 接口,應用程序才可以調用 syslogd工具幫助記錄日志信息。

二、只要系統服務在運行,就會產生日志信息,我們使用專門的工具把它記錄到磁盤上了,為了方便分析日志,日志文件不能太大、很久以前的日志文件我們應該把它刪掉。這些工作由誰完成呢?
使用 logrotate 命令來滾動,syslog記錄的日志文件。

RHEL5.4部署中央日志服務器之rsyslog+Log Analyzer http://www.linuxidc.com/Linux/2012-01/51853.htm

CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服務器 http://www.linuxidc.com/Linux/2013-07/86956.htm

RHEL5.4部署中央日志服務器之rsyslog+loganalyzer http://www.linuxidc.com/Linux/2010-12/30801.htm

使用rsyslog mysql 和logAnalyzer 的日志服務器 http://www.linuxidc.com/Linux/2012-09/70717.htm

CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服務器 http://www.linuxidc.com/Linux/2013-07/86956.htm

三、為了讓人們從繁忙的工作中解脫出來。自動化管理:日志文件的滾動、備份、壓縮等工作。
使用兩個忠實的勞動者(進程):crond 和 anacron ,完成上述的所有工作。

看看它們各部分的實現過程:
1、syslog
syslog 只是用來管理 sysogd 和 klogd 的服務腳本。它們的配置文件在 /etc/syslog.conf

[root@node2 logs]# cat /etc/syslog.conf

# Log anything (except mail) of level info or higher.

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none /var/log/messages

# 星號(*) 表示通配所有的 priority

# *.info 表示記錄所有priority的info級別的日志信息。注意不緊包括 info 級別的,還包括比 info 級別高的所有日志信息都會被記錄下來。如:notice、warn、err、...、panic

# *.info;mail.none;authpriv.none;cron.none 表示星號(*)通配的所有 priority但不包括 mail、authpriv、cron.

# 意思是說,mail、authpriv、cron 系統的日志信息不會被記錄到 /var/log/messages 中來。

# Log all the mail messages in one place.

mail.* -/var/log/maillog

# 星號(*) 表示通配所有的 priority.

# mail.* 表示記錄系統 mail 產生的所有級別的日志信息。

# -/var/log/maillog 橫線(-)表示系統 mail 產生的日志信息是異步寫入磁盤的。意思是先把它存在 page cache 緩沖池中。再根據某種策略把它一次性刷寫到磁盤中。

# mail 是一個很繁忙的系統,產生的日志信息量非常大。如果每次產生的日志信息就立即把它寫到磁盤上的話,效率是很低的。磁盤IO速度很慢的。原因,系統默認是啟動

# 兩個髒頁刷寫線程的。可以通過/proc接口查看 [root@node2 ~]# cat /proc/sys/vm/nr_pdflush_threads 。Linux 會根據系統繁忙程度啟動更多的線程來為刷寫髒頁服務的。

# 當然我們也可以調節該內核參數。但是要根據我們硬件CPU的顆數來調節。

# Everybody gets emergency messages

*.emerg *

# *.emerg * 表示所有系統的emerg等級的日志信息都發給所有用戶。

# Save boot messages also to boot.log

local7.* /var/log/boot.log

# 該項記錄的是系統引導過程的所有級別的日志信息。


配置文件格式:
facility.priority /path
facility 是用來定義由誰產生的日志信息:那個軟件、子系統運行過程中產生的日志信息。
priority 是用來定義記錄什麼類型的日志信息。是應用程序產生的所有信息都把它記錄到日志

文件中呢,還是只記錄該應用程序的錯誤日志信息等等。
/path/file_name 是用來定義把日志信息寫到哪裡去。

查看常見的facility和priority:

[root@node2 ~]# man syslog.conf

# 常見的 facility

The facility is one of the following keywords: auth, authpriv, cron,

daemon, kern, lpr, mail, mark, news, security (same as auth), syslog,

user, uucp and local0 through local7.

# 常見的 priority

The priority is one of the following keywords, in ascending order:

debug, info, notice, warning, warn (same as warning), err, error (same

as err), crit, alert, emerg, panic (same as emerg).


syslog 有統一的日志文件格式,方便管理員閱讀。
Linux 系統日志文件的標准格式:
事件發生的時間 哪台主機的日志 產生日志信息的系統 系統發生的事件
它們各字段之間使用空格隔開。

[root@node2 ~]# tail /var/log/cron

Jun 12 10:00:01 node2 crond[5487]: (root) CMD (/usr/lib/sa/sa1 1 1)Jun 12 10:01:01 node2 crond[5490]:(root) CMD (run-parts /etc/cron.hourly)


說明:
事件發生的時間: Jun 12 10:01:01
哪台主機的日志: node2
產生日志信息的系統: crond[5490]
系統發生的事件: CMD (run-parts /etc/cron.hourly)

[root@node2 ~]# tail -2 /var/log/messages

Jun 11 22:13:54 node2 syslogd 1.4.1: restart.

Jun 11 22:13:54 node2 kernel: klogd 1.4.1, log source = /proc/kmsg started.

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/103096p2.htm

Copyright © Linux教程網 All Rights Reserved