nginx access.log 不写入日志问题
兄弟们,理了个大普,我以为可能是权限什么的问题导致不能写入日志,实际上 keepalived 只会绑定一台机器
故事是这样的:线上出了个小问题,本想着看下两台nginx服务器日志的,突然发现有一台机器的日志好多天没写入了,于是开始更改权限 chmod 777 access.log 发现还是不能写入,后来又翻了翻我自己的笔记看看权限是不是有其它问题,笔记如下:
lsattr access.log
chattr access.log
lsattr 文件属性说明:
a: append only; 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
c: compressed; 系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
d: no dump; 在进行文件系统备份时,dump程序将忽略这个文件。
i: immutable; 系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
getenforce 查看是否打开状态
setenforce 1是启用 setenforce 0 是放开(会写入日志,不会警告)
ls -Z 查看 unconfined_u:object_r:usr_t:s0 权限等
然后当我排查并且设置后还是不会写入,如图 其实正常情况下是会写入的,后来我尝试单独访问,在另外一台服务器上 curl 发现是会写入日志的 其实分析到这里就能想到问题了,我们有一个 keepalived 的应用,是一直没有转发到这台机器上来,后来我把这台机器的 keepalived 应用重启了 systemctl restart keepalived,然后就发现日志在写入了。
完了后我跟领导汇报后领导跟我来了句 “那这样52上还会有日志吗?”,我去另外一台服务器一看还真没写入了,我当时人都傻了。
|