主机升级rsyslog后服务异常分析,rsyslog服务重启报错
1:异常情况:
现有版本:rsyslog-8.24.0-34.el7.x86_64
升级到:rsyslog-8.24.0-38.el7.x86_64
升级后服务重启不了,服务状态如下:
systemd[1]: Failed to start System Logging Service.
systemd[1]: Unit rsyslog.service entered failed state.
systemd[1]: rsyslog.service failed.
systemd[1]: rsyslog.service holdoff time over, scheduling restart.
systemd[1]: Stopped System Logging Service.
systemd[1]: start request repeated too quickly for rsyslog.service
systemd[1]: Failed to start System Logging Service.
systemd[1]: Unit rsyslog.service entered failed state.
systemd[1]: rsyslog.service failed.
尝试:
1:回退原来版本得RPM包,重启服务,任然还是这个状态(未解决)
2:重启服务器,任然还是这个状态(未解决)
3:删除rsyslog这rpm包,然后再重启,状态没了,再重新安装上包启动服务,这个状态再次显现(未解决)
4:排查各种是否存在PID,以及该服务启动方式,启动流程,红帽官网寻找报错登皆排查完毕(未解决)
5:修复.services在system里重复启动过快,vim /usr/lib/systemd/system/ rsyslog.service,增加StartLimitInterval=3换行StartLimitBurst=100,限制system重复启动rsyslog服务。修改后服务状态发生转变(有进展,但未解决)
状态变化:
2:最终解决方案
日志文件过多时,rsyslog 无法启动
1:计算日志文件的数量,默认不能超过1024,故障主机显示1027已经超过默认得1024,锁定该原因
journalctl --header | grep -c 'File Path:'
2:编辑/etc/rsyslogd.conf
以下语句并将其添加到该GLOBAL DIRECTIVES
部分,增加日志文件数量限制。
vim /etc/rsyslog.conf
增加一行:$MaxOpenFiles 4096
3:重启服务(成功)
总结
渊源:
该imjournal输入模块rsyslog上打开开始的所有日志文件(通过杂志API)。当日志文件数量过多时,可以达到最大打开文件描述符的默认限制 (1024)。在这种情况下rsyslogd,无法打开任何其他文件或套接字,并将以失败退出状态 1 终止。
参考官网红帽连接(需要账号):rsyslog fails to start when there are too many journal files - Red Hat Customer Portal
有两种解决方案:
1:配置为允许打开更多的日志文件:
如上面,rsyslogd如果需要,您可以配置为允许更多打开的文件。最多可打开 4096 个文件。对于更多打开的文件,LimitNOFILE需要[Service]在rsyslog.service systemd单元文件部分调整限制。
2:清理旧的日志文件:
使用journalctl移除旧日志文件。下面的示例删除超过两周的日志文件,根据需要调整时间:
删除2周:# journalctl --vacuum-time='2 weeks'
查看:# journalctl --header | grep -c 'File Path:'
重启服务。
主机升级rsyslog后服务异常分析,rsyslog服务重启报错
1:异常情况:
现有版本:rsyslog-8.24.0-34.el7.x86_64
升级到:rsyslog-8.24.0-38.el7.x86_64
升级后服务重启不了,服务状态如下:
systemd[1]: Failed to start System Logging Service.
systemd[1]: Unit rsyslog.service entered failed state.
systemd[1]: rsyslog.service failed.
systemd[1]: rsyslog.service holdoff time over, scheduling restart.
systemd[1]: Stopped System Logging Service.
systemd[1]: start request repeated too quickly for rsyslog.service
systemd[1]: Failed to start System Logging Service.
systemd[1]: Unit rsyslog.service entered failed state.
systemd[1]: rsyslog.service failed.
尝试:
1:回退原来版本得RPM包,重启服务,任然还是这个状态(未解决)
2:重启服务器,任然还是这个状态(未解决)
3:删除rsyslog这rpm包,然后再重启,状态没了,再重新安装上包启动服务,这个状态再次显现(未解决)
4:排查各种是否存在PID,以及该服务启动方式,启动流程,红帽官网寻找报错登皆排查完毕(未解决)
5:修复.services在system里重复启动过快,vim /usr/lib/systemd/system/ rsyslog.service,增加StartLimitInterval=3换行StartLimitBurst=100,限制system重复启动rsyslog服务。修改后服务状态发生转变(有进展,但未解决)
状态变化:
2:最终解决方案
日志文件过多时,rsyslog 无法启动
1:计算日志文件的数量,默认不能超过1024,故障主机显示1027已经超过默认得1024,锁定该原因
journalctl --header | grep -c 'File Path:'
2:编辑/etc/rsyslogd.conf
以下语句并将其添加到该GLOBAL DIRECTIVES
部分,增加日志文件数量限制。
vim /etc/rsyslog.conf
增加一行:$MaxOpenFiles 4096
3:重启服务(成功)
总结
渊源:
该imjournal输入模块rsyslog上打开开始的所有日志文件(通过杂志API)。当日志文件数量过多时,可以达到最大打开文件描述符的默认限制 (1024)。在这种情况下rsyslogd,无法打开任何其他文件或套接字,并将以失败退出状态 1 终止。
参考官网红帽连接(需要账号):rsyslog fails to start when there are too many journal files - Red Hat Customer Portal
有两种解决方案:
1:配置为允许打开更多的日志文件:
如上面,rsyslogd如果需要,您可以配置为允许更多打开的文件。最多可打开 4096 个文件。对于更多打开的文件,LimitNOFILE需要[Service]在rsyslog.service systemd单元文件部分调整限制。
2:清理旧的日志文件:
使用journalctl移除旧日志文件。下面的示例删除超过两周的日志文件,根据需要调整时间:
删除2周:# journalctl --vacuum-time='2 weeks'
查看:# journalctl --header | grep -c 'File Path:'
重启服务。