我有一个在 RHEL 7 机器上运行的 Zabbix 服务器,当我使用 Web 前端(在同一个机器上)时,它显示 Zabbix 服务器没有运行。
如果我禁用 SELinux 并且不进行任何其他更改,则 Web 前端会显示 Zabbix 服务器已成功运行。
关于如何允许 Zabbix 通过,您有什么想法吗?我已经将端口 10050 和 10051 添加到 FirewallD,但 SELinux 不允许我“第二次”添加它们。
答案1
我终于搞明白了。Zabbix Server 有一个 SELinux bool,允许 httpd 与端口 10051 进行通信。要设置它,请发出命令sudo setsebool httpd_can_connect_zabbix 1
。
这将允许 Web 界面显示 Zabbix 服务器是否启用,而无需禁用 SELinux!
答案2
没有答案给出关于如何更新 SELinux 规则以及如何在服务器重启后使设置保持不变的正确建议,为此请执行以下操作:
# 设置 sebool -P httpd_can_network_connect # 设置布尔值 -P httpd_can_network_connect=true
这是在 RHEL7 上完成的。
答案3
- SELinux
https://www.zabbix.com/forum/showthread.php?t=47375&highlight=selinux 您已禁用它-确定
- 防火墙
尝试关闭防火墙
- PHP 前端/zabbix 服务器配置
常见问题是当 zabbix_server 仅在 IP 上监听,而不是在本地主机上监听(netstat -tanp | grep :10051),但前端配置为 localhost:10051,请正确测试和配置前端/zabbix 服务器
# grep ZBX_SERVER /etc/zabbix/web/zabbix.conf.php
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
# telnet localhost 10051
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
如果服务器正在监听所有接口(包括 localhost),那么我也可以在前端配置中使用 localhost:
# netstat -tanp | grep :10051 | grep LISTEN
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 825/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 825/zabbix_server
答案4
你不需要sudo setenforce 0
请勿使用unreserved_port_t
,否则/var/log/zabbix/zabbix_agentd.log
输出为
31542:20220614:214432.987 using configuration file: /etc/zabbix/zabbix_agentd.conf
31542:20220614:214432.987 listener failed: bind() for [[-]:10050] failed: [13] Permission denied
改为zabbix_agent_port_t
semanage port --add --type zabbix_agent_port_t --proto tcp 10050 || \
semanage port --modify --type zabbix_agent_port_t --proto tcp 10050
而对于 zabbix 服务器使用zabbix_port_t
端口 10051。