服务器一直报某种systemd信息,对系统监控和问题分析造成影响,本文探讨对此类信息的的屏蔽方法。
一、问题现象
服务器/var/log/messages文件中一直报某类systemd信息,如:
影响到对其它应用的日志分析判断了,对于这种我们不太关注,对业务也没什么影响的日志,我们考虑对其进行屏蔽处理。
二、问题分析
/var/log/messages文件中记录的某类systemd信息,是通过syslog系统或systemd-journald服务的配置和转发机制记录到其中的,具体过程如下:
1、通过 syslog 系统
日志产生:systemd在运行过程中会产生各种日志信息,这些信息会被发送到系统的日志缓冲区。 rsyslogd 接收:rsyslogd(或其他syslog守护进程)会监控系统日志缓冲区,当有新的日志消息出现时,它会根据配置文件中的规则来决定如何处理这些消息。 规则匹配:在rsyslog的配置文件(通常位于/etc/rsyslog.conf或/etc/rsyslog.d/目录下的其他配置文件)中,会有针对systemd日志的配置规则。例如,可能会有规则指定将systemd的某些级别的日志消息记录到/var/log/messages文件中。 日志写入:当rsyslogd根据规则判断某条systemd日志符合写入/var/log/messages的条件时,它就会将该日志消息写入到这个文件中。
2、通过 systemd – journald 服务
日志收集:systemd-journald是systemd自带的日志收集和管理服务,它会收集系统中各种服务和进程产生的日志,包括systemd自身的日志。 转发配置:虽然systemd-journald有自己的日志存储格式和位置(通常位于/var/log/journal/目录下),但它也可以配置将日志转发到其他位置,包括/var/log/messages。这需要在systemd的相关配置文件中进行设置,例如通过修改/etc/systemd/journald.conf文件中的配置项,启用日志转发功能,并指定将特定类型或级别的systemd日志转发到/var/log/messages。 日志写入:当配置好转发后,systemd – journald会按照配置将相应的systemd日志消息发送到/var/log/messages文件中进行记录。
三、处理方法
1、修改systemd的日志配置
找到systemd的日志配置文件,通常位于/etc/systemd/journald.conf。在该文件中添加或修改以下内容:
[Journal] … SuppressMessage=systemd[1]: Time has been changed
上述配置中,SuppressMessage选项用于指定要屏蔽的日志消息。这里设置为屏蔽systemd[1]: Time has been changed这条日志。
修改完成后,需要重启systemd-journald服务使配置生效:
systemctl restart systemd-journald
2、配置rsyslog
如果系统使用rsyslog进行日志记录,可以在rsyslog的配置文件中添加过滤规则来实现。步骤如下: 打开rsyslog的配置文件,通常位于/etc/rsyslog.d/目录下,创建一个新的配置文件,例如time_msgs.conf。 在time_msgs.conf文件中添加以下内容:
if $programname == 'systemd' and $msg contains 'Time has been changed' then stop
这表示当rsyslog接收到来自systemd且包含Time has been changed的日志消息时,停止记录该消息。 保存文件并退出编辑器。 重启rsyslog服务,使配置生效: systemctl restart rsyslog
3、实作
本次配置采用方法2,在rsyslog服务中屏蔽记录该消息,如下:
# cat /etc/rsyslog.d/time_msgs.conf
if $programname == 'systemd' and $msg contains 'Time has been changed' then stop
# systemctl restart rsyslog
配置完成后该日志不再生成了。
评论前必须登录!
注册