Zabbix Agent 无法读取 /var/log/messages

Zabbix Agent 无法读取 /var/log/messages

因此,我正在尝试监控运行 Centos 7 的 VM 的日志。具体来说,出现问题的是 /var/log/messages。我已更改文件的组所有权(在 logrotate.conf 中进行了相关更改)并手动更改了已创建的文件。您可以在下面看到它的权限:

[matias@Centos_7_VM ~]$ sudo ls -lh /var/log/messages
-rw-rwx---+ 1 root zabbix 889K jul 25 10:53 /var/log/messages
[matias@Centos_7_VM ~]$ getfacl /var/log/messages
getfacl: Removing leading '/' from absolute path names
# file: var/log/messages
# owner: root
# group: zabbix
user::rw-
user:zabbix:rwx
group::---
mask::rwx
other::---

但即使进行了所有这些更改,zabbix 代理仍被拒绝读取该日志。是否有其他因素阻止该进程读取文件?

代理日志

993:20180725:062459.211 Starting Zabbix Agent [Centos_7_VM]. Zabbix 3.2.11 (revision 76339).
   993:20180725:062459.256 **** Enabled features ****
   993:20180725:062459.257 IPv6 support:          YES
   993:20180725:062459.257 TLS support:           YES
   993:20180725:062459.257 **************************
   993:20180725:062459.257 using configuration file: /etc/zabbix/zabbix_agentd.conf
   993:20180725:062459.303 agent #0 started [main process]
   999:20180725:062459.359 agent #1 started [collector]
  1003:20180725:062459.396 agent #2 started [listener #1]
  1004:20180725:062459.406 agent #3 started [listener #2]
  1005:20180725:062459.413 agent #4 started [listener #3]
  1007:20180725:062459.472 agent #5 started [active checks #1]
  1007:20180725:105103.700 active check "log[/var/log/messages,(?i)error]" is not supported: Cannot open file "/var/log/messages": [13] Permission denied

答案1

它被称为 SELinux。

不幸的是,Zabbix 代理的 SELinux 策略尚未完善(目前),几乎所有您想要监控的内容都将被拒绝。我个人将 Zabbix 代理类型设置为宽容以解决这个问题。这让 Zabbix 代理基本上可以绕过 SELinux,同时它仍然适用于系统上的所有其他内容。

semanage permissive -a zabbix_agent_t

答案2

如果您不想以任何方式禁用 SELinux:

你可以通过运行来检查它是否是 SELinux audit2allow -a,并检查是否有任何包含 Zabbix 的输出。你也可以简单地暂时设置宽容模式来验证阻塞:

  1. sudo setenforce 0
  2. 检查 zabbix 代理是否可以执行其操作
  3. sudo setenforce 1

如果确实是 SELinux 拒绝代理,请尝试以下操作:

创建一个策略来允许任何拒绝 Zabbix 的操作(以 root 或 sudo 身份):

grep zabbix /var/log/audit/audit.log | audit2allow -M myzabbix

这会将任何 Zabbix 拒绝传送到 audit2allow,它会在您所在的目录中创建一个策略文件和编译的二进制文件。我通常这样做是/root/selinux为了清洁。

然后运行semodule -i myzabbix.pp

这会将策略加载到 SELinux 中,并且该策略是永久性的,因此无需担心重启会破坏策略。

相关内容