2.12. 配置 syslogd 事件记录

你有可能编辑 /etc/syslog.conf 文件来使群集把事件记录到 /var/log/messages 以外的日志文件中。把群集消息记录到不同的文件有助于更清晰地诊断问题。

成员使用 syslogd 守护进程把和群集相关的事件记录到 /etc/syslog.conf 文件中指定的文件中。日志文件使诊断群集问题成为可能。推荐你设置事件记录,因此 syslogd 守护进程只记录运行着的成员上的群集消息。你需要检查所有成员上的日志文件来获得整个群集的全景。

syslogd 守护进程记录群集守护进程的消息,这些消息默认为严重性级别4(「警告」)。关于群集守护进程的详情请参阅第 2.6 节

事件的重要性决定日志项目的严重性级别。重要的事件在它们会影响群集的可用性之前应该被调查。群集可以使用以下严重性级别来记录消息,这些级别按照其严重程度排列:

日志文件项目的例子如下:

Jul 18 20:24:39 clu1 clufence[7397]: <info> STONITH: rps10 at /dev/ttyS0,\
	  port 0 controls clu1 
Jul 18 20:24:39 clu1 clufence[7397]: <info> STONITH: rps10 at /dev/ttyS0,\
	  port 1 controls clu2
Jul 18 20:24:53 clu1 clufence[7397]: Port 0 being turned off.
Jul 18 20:24:53 clu1 clufence[7397]: <notice> STONITH: clu2 has been fenced! 
Jul 18 20:51:03 clu1 clufence[30780]: <info> STONITH: rps10 at/dev/ttyS0,\
	  port 0 controls clu1
Jul 18 20:51:03 clu1 clufence[30780]: <info> STONITH: rps10 at /dev/ttyS0,\
	  port 1 controls clu2
Jul 18 20:51:17 clu1 clufence[30780]: Port 0 being turned on.
Jul 18 20:51:17 clu1 clufence[30780]: <notice> STONITH: clu2 is no longer fenced off. 
     [1]         [2]      [3]               [4]         [5]

日志文件中的每个项目都包含以下信息:

配置了群集软件后,你还可以编辑 /etc/syslog.conf 文件来使群集把事件记录到不同于默认日志文件(/var/log/messages)的文件中。群集工具和守护进程使用一个叫做 local4 的 syslog 标签来记录它们的消息。使用群集特有的日志文件使群集监视和解决问题成为可能。

要防止群集事件被记录到 /var/log/messages 文件中,把 local4.none 添加到 /etc/syslog.conf 文件中的以下行:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none;local4.none   /var/log/messages

要让群集记录设施在 /var/log/cluster 文件中记录群集事件,把和以下相似的内容添加到 /etc/syslog.conf 文件中:

#
# Cluster messages coming in on local4 go to /var/log/cluster
#
local4.*                         /var/log/cluster

要应用从前的改变,使用 service syslog restart 命令来重新启动 syslogd

此外,你还可能修改被个别群集守护进程记录的事件严重性级别;详情请参考第 2.6 节syslog.conf 的说明书页。

要根据 /etc/logrotate.conf 文件(默认为每周)中指定的频繁程度来循环群集日志文件,在 /etc/logrotate.d/syslog 文件的第一行中添加 /var/log/cluster。例如:

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler 
/var/log/boot.log /var/log/cron /var/log/cluster {
   sharedscripts
   postrotate
       /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> 
       /dev/null || true
   endscript
}