几乎每次syslog-ng写入当前日志文件时,都会在6天前触及日志文件。 它不会将任何数据写入旧的日志文件,只是更新上次修改的时间戳。 日志文件的屏幕截图
我不是100%确定为什么它停止更新最近两天中午前的26日和27日文件上次修改的时间戳,但我认为这可能只是巧合。 在最近两天的这段时间,我重新启动了syslog-ng服务和VMware主机的系统日志服务,可能已经停止触摸旧文件。 话虽如此,我今天早上又重新启动了服务,现在还在发生。
我们目前正在从24个VMware主机获取日志。 每台主机的日志文件每天都会以一个新文件存储在自己的目录中。 这只发生在一台主机的日志文件上。 所有的主机名都非常相似(group1-esx01 … 08,group2-esx01 … 08,group3-esx01 … 08),所以它似乎不是一个过滤问题,解释了为什么它只发生在一个文件夹中的日志。
我们使用默认的syslog-ng.conf文件,并把我们的configuration放在conf.d目录下的一个文件中。 该文件看起来像这样:
#Global network listener source s_network { network( ip("1.1.1.1") port(1514) max-connections(100) transport("tls") tls( key_file("/etc/syslog-ng/cert/PrivateKey.pem") cert_file("/etc/syslog-ng/cert/PublicKey.pem") peer_verify(optional-untrusted) ) ); }; #VMware #Dir for each host, file for each day. destination d_vmware { file( "/var/log/vmware/$HOST/$YEAR$MONTH$DAY.log" perm(0644) create_dirs(yes) ); }; #Only get data from machines who's hostname starts with the prefixes of the various blade groups. filter f_vmware { host("group1-esx*" type(glob)) or host("group2-esx*" type(glob)) or host("group3-esx*" type(glob)); }; #From global listener to VMware dest log { source(s_network); filter(f_vmware); destination(d_vmware); };
我认为find一个经历过这个的人是相当长的一个镜头。 不过,我希望有人至less有一个从哪里开始的想法。
谢谢你的时间。
编辑:快速更新,在12:12 pm 20170728.log文件停止更新其最后修改的时间戳和20170729.log文件开始具有更新其最后修改的时间戳。
从那以后,我将20170729.log设置为不可变的,并且当试图以root身份接触文件时,我得到了“权限被拒绝”。 但是,它仍然有最后修改时间更新! 我没有看到syslog-ng报告任何错误。 奇怪的东西。
编辑2:我find了解决scheme! 默认情况下,syslog-ng使用收到的消息中的时间戳作为日志条目的时间戳,这是有道理的。 所以,主机发送日志消息到syslog-ng服务器的可能性很大。 我想这是定期在时间戳上发出一个错误date的空信息。 无论如何,我们不是深入研究可以在ESXi中生成日志消息的所有内容,而是将VM从受影响的主机上迁移出来,然后重新启动。 这似乎已经解决了这个问题,这对我来说已经足够好了,因为我们将在不久的将来取代这组服务器。