近期公司装了一组centos7.2的服务器,运行一段时间后rsyslog不打印日志了。

于是进行相关处理,因为以前用的都是centos6.3,  7.2用的比较少,处理效率比较低。


先使用systemctl restart rsyslog.service,发现无效,只能打印出

Jul 26 17:26:50 AH-HTTP-05 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="792" x-info="http://www.rsyslog.com"] exiting on signal 15.
Jul 26 17:29:03 AH-HTTP-05 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="904" x-info="http://www.rsyslog.com"] start

其他日志一概打印不出来。


删除二进制程序,使用

yum reinstall rsyslog

重装最新版本,无效。

以前centos6.2下syslog是使用unix端口监听日志信息并打印到message中,

netstat -anop|grep syslog

发现为空,担心是不是因为监听端口出了问题。


于是下载最新版的rsyslog的源码包编译,发现出现了监听端口,但是还是没有日志,不仅如此,连restart syslog的日志都不打印了。

但是发现有程序core掉了,此时能打印日志,除了core日志以外,什么日志都不打印。


查了下资料,centos7 用system-journal,代替了原来的syslog,并由rsyslog负责写入message等日志文件。

[root@AH-HTTP-04 ~]# netstat -anop|grep jour
unix  2      [ ACC ]     STREAM     LISTENING     1435     1/systemd            /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    1438     1/systemd            /run/systemd/journal/socket
unix  3      [ ]         STREAM     CONNECTED     18055    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     7909     659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18062    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     12524    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11538    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11480    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     15559    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11493    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11478    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18564    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11539    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11541    659/systemd-journal  /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     11481    659/systemd-journal  /run/systemd/journal/stdout

发现果然监听端口,于是

systemctl restart systemd-journald.service

重启进程,发现还是不打印日志。


无奈之下重启设备发现打印日志了。


重启可以ok,那估计肯定是内存数据有问题,也可能是磁盘满了。

[root@AH-HTTP-04 ~]# ps aux|grep syslog
root       894  0.0  0.1 724012 52988 ?        Ssl  Jul26   2:21 /usr/sbin/rsyslogd -n
root     11842  0.0  0.0 112652   964 pts/2    S+   14:59   0:00 grep --color=auto syslog
[root@AH-HTTP-04 ~]# ll /proc/894/fd
total 0
lr-x------ 1 root root 64 Jul 28 14:54 0 -> /dev/null
l-wx------ 1 root root 64 Jul 28 14:54 1 -> /dev/null
lr-x------ 1 root root 64 Jul 28 14:54 10 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000039949-000555421937942e.journal
lr-x------ 1 root root 64 Jul 28 14:54 11 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000052886-00055545232cc8b5.journal
lr-x------ 1 root root 64 Jul 28 14:54 12 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-000000000006ae3f-0005554788818ea3.journal
lr-x------ 1 root root 64 Jul 28 14:54 13 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000083cc4-0005554a87b67bd3.journal
lr-x------ 1 root root 64 Jul 28 14:54 14 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-000000000009c05c-0005554cc150f29c.journal
lr-x------ 1 root root 64 Jul 28 14:54 15 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-00000000000b4a2c-0005554f6a127117.journal
lr-x------ 1 root root 64 Jul 28 14:54 16 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-00000000000d05bf-00055555c24ad88d.journal
lr-x------ 1 root root 64 Jul 28 14:54 17 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system.journal
l-wx------ 1 root root 64 Jul 28 14:54 2 -> /dev/null
l-wx------ 1 root root 64 Jul 28 14:54 3 -> /var/log/messages
l-wx------ 1 root root 64 Jul 28 14:54 4 -> /var/log/cron
lr-x------ 1 root root 64 Jul 28 14:54 5 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000000001-00055535427b86bd.journal
lr-x------ 1 root root 64 Jul 28 14:54 6 -> anon_inode:inotify
l-wx------ 1 root root 64 Jul 28 14:54 7 -> /var/log/secure
l-wx------ 1 root root 64 Jul 28 14:54 8 -> /var/log/maillog
lr-x------ 1 root root 64 Jul 28 14:54 9 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-000000000001c5d5-0005553ad572a085.journal

发现syslog在/run/log/journal/下面有大量的临时日志文件

[root@AH-HTTP-04 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdi2       533G   11G  495G   3% /
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G     0   16G   0% /dev/shm
tmpfs            16G  954M   15G   6% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/sdi1       969M   99M  804M  11% /boot
/dev/sda        3.7T  923G  2.6T  27% /home1
/dev/sdb        3.7T  921G  2.6T  27% /home2
/dev/sdc        3.7T  936G  2.6T  27% /home3
/dev/sdd        3.7T  927G  2.6T  27% /home4
/dev/sde        3.7T  914G  2.6T  26% /home5
/dev/sdf        3.7T  904G  2.6T  26% /home6
/dev/sdg        3.7T  925G  2.6T  27% /home7
/dev/sdh        3.7T  917G  2.6T  26% /home8
/dev/sdj        3.7T  900G  2.6T  26% /home9
/dev/sdk        3.7T  927G  2.6T  27% /home10
/dev/sdl        894G  413G  437G  49% /home11
/dev/sdm        3.7T  921G  2.6T  27% /home12
tmpfs           3.2G     0  3.2G   0% /run/user/1000

发现这些目录挂载在tmpfs,而这个是内存盘,估计是运行时间太长,把16G的内存盘都占完了,再也不能写入临时文件了,导致syslog不能打印日志。


清空垃圾文件,重启syslog,果然一切正常。


但是现在还是不明白为什么会形成这些垃圾文件,因为日志写入量并不大,不应该会出现写不进去的情况。现在临时用脚本定时删除,避免问题。