nginx access.log 不写入日志问题

兄弟们,理了个大普,我以为可能是权限什么的问题导致不能写入日志,实际上 keepalived 只会绑定一台机器

故事是这样的:线上出了个小问题,本想着看下两台nginx服务器日志的,突然发现有一台机器的日志好多天没写入了,于是开始更改权限 chmod 777 access.log 发现还是不能写入,后来又翻了翻我自己的笔记看看权限是不是有其它问题,笔记如下:

#Operation not permitted  删除不了,不能修改文件
# 查看文件权限
lsattr access.log
#chattr命令用于修改文件属性,chattr命令需要root权限。
chattr access.log


lsattr 文件属性说明:

a: append only; 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

c: compressed; 系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。

d: no dump; 在进行文件系统备份时,dump程序将忽略这个文件。

i: immutable; 系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
# end 


# linux 有两套权限 rwx和selinux权限

getenforce 查看是否打开状态
setenforce 1是启用 setenforce 0 是放开(会写入日志,不会警告)
ls -Z 查看 unconfined_u:object_r:usr_t:s0 权限等

然后当我排查并且设置后还是不会写入,如图
在这里插入图片描述
其实正常情况下是会写入的,后来我尝试单独访问,在另外一台服务器上 curl 发现是会写入日志的
在这里插入图片描述
其实分析到这里就能想到问题了,我们有一个 keepalived 的应用,是一直没有转发到这台机器上来,后来我把这台机器的 keepalived 应用重启了 systemctl restart keepalived,然后就发现日志在写入了。

完了后我跟领导汇报后领导跟我来了句 “那这样52上还会有日志吗?”,我去另外一台服务器一看还真没写入了,我当时人都傻了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐