近期公司装了一组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 jourunix 2 [ ACC ] STREAM LISTENING 1435 1/systemd /run/systemd/journal/stdoutunix 5 [ ] DGRAM 1438 1/systemd /run/systemd/journal/socketunix 3 [ ] STREAM CONNECTED 18055 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 7909 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 18062 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 12524 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11538 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11480 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 15559 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11493 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11478 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 18564 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11539 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11541 659/systemd-journal /run/systemd/journal/stdoutunix 3 [ ] STREAM CONNECTED 11481 659/systemd-journal /run/systemd/journal/stdout
发现果然监听端口,于是
systemctl restart systemd-journald.service
重启进程,发现还是不打印日志。
无奈之下重启设备发现打印日志了。
重启可以ok,那估计肯定是内存数据有问题,也可能是磁盘满了。
[root@AH-HTTP-04 ~]# ps aux|grep syslogroot 894 0.0 0.1 724012 52988 ? Ssl Jul26 2:21 /usr/sbin/rsyslogd -nroot 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/fdtotal 0lr-x------ 1 root root 64 Jul 28 14:54 0 -> /dev/nulll-wx------ 1 root root 64 Jul 28 14:54 1 -> /dev/nulllr-x------ 1 root root 64 Jul 28 14:54 10 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000039949-000555421937942e.journallr-x------ 1 root root 64 Jul 28 14:54 11 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000052886-00055545232cc8b5.journallr-x------ 1 root root 64 Jul 28 14:54 12 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-000000000006ae3f-0005554788818ea3.journallr-x------ 1 root root 64 Jul 28 14:54 13 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000083cc4-0005554a87b67bd3.journallr-x------ 1 root root 64 Jul 28 14:54 14 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-000000000009c05c-0005554cc150f29c.journallr-x------ 1 root root 64 Jul 28 14:54 15 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-00000000000b4a2c-0005554f6a127117.journallr-x------ 1 root root 64 Jul 28 14:54 16 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-00000000000d05bf-00055555c24ad88d.journallr-x------ 1 root root 64 Jul 28 14:54 17 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system.journall-wx------ 1 root root 64 Jul 28 14:54 2 -> /dev/nulll-wx------ 1 root root 64 Jul 28 14:54 3 -> /var/log/messagesl-wx------ 1 root root 64 Jul 28 14:54 4 -> /var/log/cronlr-x------ 1 root root 64 Jul 28 14:54 5 -> /run/log/journal/4416930d41a846139e3ab8c8cdeb1cce/system@224646929a8147b98d87eb38db690390-0000000000000001-00055535427b86bd.journallr-x------ 1 root root 64 Jul 28 14:54 6 -> anon_inode:inotifyl-wx------ 1 root root 64 Jul 28 14:54 7 -> /var/log/securel-wx------ 1 root root 64 Jul 28 14:54 8 -> /var/log/mailloglr-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 -hFilesystem Size Used Avail Use% Mounted on/dev/sdi2 533G 11G 495G 3% /devtmpfs 16G 0 16G 0% /devtmpfs 16G 0 16G 0% /dev/shmtmpfs 16G 954M 15G 6% /runtmpfs 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% /home12tmpfs 3.2G 0 3.2G 0% /run/user/1000
发现这些目录挂载在tmpfs,而这个是内存盘,估计是运行时间太长,把16G的内存盘都占完了,再也不能写入临时文件了,导致syslog不能打印日志。
清空垃圾文件,重启syslog,果然一切正常。
但是现在还是不明白为什么会形成这些垃圾文件,因为日志写入量并不大,不应该会出现写不进去的情况。现在临时用脚本定时删除,避免问题。