在 Ubuntu 上 Filebeat 报权限错误 是非常常见的问题,通常不是 Filebeat 本身的 bug,而是它“读不到文件”或“写不了数据”。下面按最常见原因 → 排查方法 → 解决办法给你讲清楚。
Err: failed to read ... permission denied
/var/log/nginx/access.log)权限是:-rw-r----- 1 root root
ps -ef | grep filebeat
ls -l /var/log/xxx.log
id filebeat
sudo usermod -aG adm filebeat
sudo usermod -aG www-data filebeat
sudo systemctl restart filebeat
Ubuntu 中
adm组通常能读/var/log
sudo chmod 644 /var/log/nginx/access.log
⚠️ 不推荐长期用(服务重启可能恢复)
Filebeat 需要:
open() 文件)namei -l /var/log/nginx/access.log
如果中间某层目录是:
drwx------ root root
Filebeat 必挂
sudo chmod 755 /var/log
sudo chmod 755 /var/log/nginx
permission denied
open /var/lib/filebeat/registry: permission denied
Ubuntu 使用 systemd,Filebeat 的数据目录权限不对
ls -ld /var/lib/filebeat
ls -l /var/lib/filebeat/registry
sudo chown -R root:root /var/lib/filebeat
sudo chmod -R 755 /var/lib/filebeat
sudo systemctl restart filebeat
sudo aa-status | grep filebeat
sudo systemctl stop apparmor
sudo systemctl disable apparmor
(或写 AppArmor 规则,较复杂)
临时测试:
sudo systemctl edit filebeat
写入:
[Service]
User=root
Group=root
sudo systemctl daemon-reload
sudo systemctl restart filebeat
✅ 如果这样不报错 → 100% 是权限问题
paths:
- /var/log/nginx/*.log
但文件其实是:
/var/log/nginx/access.log.1
Filebeat 会尝试读取失败
# 1. filebeat 用户
id filebeat
# 2. 日志权限
ls -l /var/log/xxx.log
# 3. 目录权限
namei -l /var/log/xxx.log
# 4. filebeat 状态
sudo systemctl status filebeat
# 5. 日志
journalctl -u filebeat -f
Ubuntu 上 Filebeat 报权限错误,99% 是因为 filebeat 用户读不到日志文件或目录,或数据目录权限不对。
如果你愿意,可以把 具体报错信息 + filebeat.yml 相关配置贴出来,我可以直接帮你定位是哪一条。