Linux 日志系统组成详解
Linux 日志系统组成详解
Linux 日志系统有三部分组成:
一、使用什么工具记录系统产生的日志信息?
syslog服务脚本管理的两个进程: syslogd、klogd 来记录系统产生的日志信息;
klogd 进程是专门为内核产生的日志信息服务的。
syslogd 进程是专门为应用程序服务(除了内核)产生的日志信息服务的;
只有调用了 logger 接口,应用程序才可以调用 syslogd工具帮助记录日志信息。
二、只要系统服务在运行,就会产生日志信息,我们使用专门的工具把它记录到磁盘上了,为了方便分析日志,日志文件不能太大、很久以前的日志文件我们应该把它删掉。这些工作由谁完成呢?
使用 logrotate 命令来滚动,syslog记录的日志文件。
RHEL5.4部署中央日志服务器之rsyslog+Log Analyzer
CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
RHEL5.4部署中央日志服务器之rsyslog+loganalyzer
使用rsyslog mysql 和logAnalyzer 的日志服务器
CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
三、为了让人们从繁忙的工作中解脱出来。自动化管理:日志文件的滚动、备份、压缩等工作。
使用两个忠实的劳动者(进程):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.
更多详情见请继续阅读下一页的精彩内容:
|
评论暂时关闭