一、问题描述

某单位多台中标麒麟V7服务器message日志不再写入,系统中能查到的归档日志都是1-2个月之前的。

二、问题分析定位

   1. 首先考虑是不是日志服务没有起来,查看服务状态,systemctl status rsyslog 发现服务是正常的

麒麟服务器 安装Docker Compose 麒麟server_linux

   2. 查了下可能是日志配置文件的问题,/etc/rsyslog.conf 参考标准的日志文件配置,重新配置了一遍,重启日志服务systemctl restart rsyslog,发现日志还是没法写入。

麒麟服务器 安装Docker Compose 麒麟server_linux_02

另外是多台服务器都出现日志无法写入的情况,日志配置文件不可能都有问题,况且默认的配置文件,日志是可以写入的,所以配置文件的问题应该可以排除。

   3. 进一步分析可能是跟日志服务相关的其他服务出现问题导致日志没法写入到message。       

日志处理服务——rsyslog,它可以将程序产生的日志信息进行过滤、处理并存储到指的文件服务器中,通过编辑其配置文件 /etc/rsyslog.conf 进行一些全局或者日志记录规则的定义。(以前老版本的linux日志收集服务是syslog,不过新一点版本的日志收集服务都是rsyslog)

    b.所以rsyslog只是收集,过滤,处理相关的日志信息,然后再存到/etc/rsyslog.conf配置文件中指定的日志文件里。

    c.日志服务其实还有个操作系统自带的日志服务systemd-journald

    systemd-journald 用于检索 systemd 的日志,是 systemd 自带的日志系统。systemd-journald 是 rsyslog的补充,收集来自内核、启动过程早期阶段、标准输出、系统日志、守护进程启动和运行期间错误的信息。syslog的信息也可以由systemd-journald 转发到 rsyslog中进一步处理。

       默认情况下,systemd 的日志保存在/run/log/journal中,系统重启就会清除。通过新建/var/log/journal目录,日志会自动记录到这个目录中。rsyslog 服务随后根据优先级排列日志信息,将它们写入到/var/log目录中永久保存。

三、问题解决

    发现系统自带的日志服务systemd-journald并没有起来 systemctl status systemd-journald查看。于是启动systemctl start systemd-journald,服务启动后,查看状态,然后发现/var/log/message在不停的更新日志,查看了日志文件发现各种日志都有记录,至此问题解决。

麒麟服务器 安装Docker Compose 麒麟server_配置文件_03

麒麟服务器 安装Docker Compose 麒麟server_运维_04

四、总结

       老版本的日志收集服务都是syslog服务,新版本的日志收集服务是rsyslog,但是系统自带的日志服务systemd-journald也一定要开启,因为很多系统的日志信息都是通过systemd-journald 转发到 rsyslog中进一步处理,将信息永久存在/var/log/messages下。

所以检查确认rsyslog和systemd-journald这两个服务是否都是正常的运行状态。