Unix/Linux 系统自动化管理 日志管理篇(3)
- UID
- 1066743
|
Unix/Linux 系统自动化管理 日志管理篇(3)
Linux syslog/syslog-ng 简介及其自动化监控机制大部分的 Linux 系统中都要使用 syslog 机制来记录系统日志,它具有很强的灵活性,能使系统根据不同日志配置采取不同的动作。一般来讲,syslog 能通过产生日志的子系统和信息优先级对日志做分类处理,包括将日志条目写到一个文件,一个设备,或给用户发送一个信息。它既可以记录本地事件,也可能通过网络纪录另一个主机上的事件。
但是,随着系统中运行的应用程序越来越多,一个子系统有可能同时被多个应用程序使用,这样就导致一些不是很重要的信息将重要的信息掩盖,仅凭产生日志的子系统和信息优先级来区分日志的方法已经不能明确地甄别出系统管理者感兴趣的信息。
syslog-ng(下一代系统日志工具)应运而生,它的一个设计原则就是建立更好的消息过滤粒度。syslog-ng 可以完全替代 syslog 的服务,并且通过定义规则,实现更好的过滤功能。
下面我们将分别对 syslog 和 syslog-ng 机制做具体的介绍。
Linux syslog/syslog-ng 机制组件
Linux syslog/syslog-ng 机制主要由以下几个部分组成:
- 设备文件 /dev/log: 用于接收内核以及应用程序产生的日志信息。
- 守护进程:在系统初始化时自动启动,监控内核以及应用程序传递给设备文件 /dev/log 的日志信息,并将日志信息计入日志文件。
- 在 syslog 机制中为 /sbin/syslogd;在 syslog-ng 机制中为 /sbin/syslog-ng。
- 配置文件:为守护进程提供配置信息,在程序启动时读取,用于指定日志记录规则。
在 syslog 机制中配置文件的默认位置为 /etc/syslog.conf;在 syslog-ng 机制中为 /etc/syslog-ng/syslog-ng.conf。
日志文件 /var/log/messages:缺省日志文件。用于记录邮件以外其他设备优先级高于”info”的日志信息。
Linux syslog/syslog-ng 配置和使用
Linux 中 syslog/syslog-ng 的配置较 AIX 简单而灵活,用户只需手动修改 syslog.conf/syslog-ng.conf 文件中的配置条目后,重新启动 syslog 服务即可完成,下面我们具体介绍配置方法:
- 在 syslog 机制中配置文件 /etc/syslog.conf 的规则格式如下: facility.level action
其中 facility.level 又称为选择符 (selector),facility 指产生日志的子系统,level 指日志级别。
例如:
authpriv.* /var/log/secure
表示将来自子系统 authpriv 的所有优先级日志条目都写入 /var/log/secure 文件中。
facility 可以设置为下面的关键字之一:
auth 由 pam_pwdb 报告的认证活动。
authpriv 包括私有信息 ( 如用户名 ) 在内的认证活动
cron 与 cron 和 at 有关的信息。
daemon 与 inetd 守护进程有关的信息。
ftp 与 FTP 有关的信息
kern 内核信息,首先通过 klogd 传递。
lpr 与打印服务有关的信息。
mail 与电子邮件有关的信息
mark syslog 内部功能用于生成时间戳
news 来自新闻服务器的信息
syslog 由 syslog 生成的信息
user 由用户程序生成的信息
uucp 由 uucp 生成的信息
local0 ~ local7 由自定义程序使用,例如使用 local5 做为 ssh 功能
* 通配符代表除了 mark 以外的所有功能
level 可以设置为下面的关键字之一 ( 降序排列,严重性越来越低 ):
emerg 系统不可用
alert 需要立即被修改的条件
crit 阻止某些工具或子系统功能实现的错误条件
err 阻止工具或某些子系统部分功能实现的错误条件
warning 预警信息
notice 具有重要性的普通条件
info 提供信息的消息
debug 不包含函数条件或问题的其他信息
none 没有优先级,通常用于排错
* 除了 none 之外的所有级别
- 在 syslog-ng 机制中配置文件 /etc/syslog-ng/syslog-ng.conf 的规则格式如下: log { source S1; source S2; ... filter F1; filter F2; ... destination D1; destination D2; ... };
其中 source 为消息源标志符,filter 为过滤器标志符,destination 为目的地标志符。
例如:
source src { unix-dgram("/dev/log"); };
filter f_warn { level(warn, err, crit); };
destination warn { file("/var/log/warn" fsync(yes)); };
log { source(src); filter(f_warn); destination(warn); };
表示将 /dev/log 设备收到的所有日志信息做过滤处理,只把优先级是 warn, err, crit 的日志写入 /var/log/warn 文件中。
用户可以选择使用系统提供的 source/filter/destination 规则定义,也可以按规定格式定义用户化的配置项。一般情况下,我们只创建自定义的 destination 并结合系统提供的 source 和 filter 一起使用。关于这些配置项的定义方法请参见 syslog-ng.conf manpage。
|
|
|
|
|
|