首先,我正在运行 CentOS 6.5 并尝试使用 Zabbix 2.2.4。所有主机名都已替换为示例。
我已在我的 Zabbix 机器上安装了以下 RPM(主机名将是 zbx-hostname):
zabbix-java-gateway-2.2.4-1.el6.x86_64
zabbix-web-2.2.4-1.el6.noarch
zabbix-agent-2.2.4-1.el6.x86_64
zabbix-server-2.2.4-1.el6.x86_64
zabbix-2.2.4-1.el6.x86_64
zabbix-web-pgsql-2.2.4-1.el6.noarch
zabbix-server-pgsql-2.2.4-1.el6.x86_64
我的 PostgreSQL 机器已使用 RPMS 安装了 postgreSQL 9.2(主机名将是 db-hostname):
postgresql92-9.2.8-1PGDG.rhel6.x86_64
postgresql92-libs-9.2.8-1PGDG.rhel6.x86_64
postgresql92-server-9.2.8-1PGDG.rhel6.x86_64
我的 zabbix_server.conf 文件如下所示:
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=db-hostname
DBName=zabbix-dbname
DBUser=zabbix-user
DBPassword=zabbix-password
DBSocket=
DBPort=5432
我的 zabbix php 配置如下:
$DB['TYPE'] = 'POSTGRESQL';
$DB['SERVER'] = 'db-hostname';
$DB['PORT'] = '5432';
$DB['DATABASE'] = 'zabbix-dbname';
$DB['USER'] = 'zabbix-user';
$DB['PASSWORD'] = 'zabbix-password';
// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
我可以运行以下命令并成功连接到我的数据库:
export PGPASSWORD=zabbix; psql -U zabbix-user -d zabbix-dbname -h db-hostname
export PGPASSWORD=zabbix; psql -U zabbix-user -d zabbix-dbname -h 192.168.0.1
但是 zabbix 拒绝连接打印输出(192.168.0.1 是正确解析的 IP 地址):
25015:20150205:112656.236 [Z3001] connection to database 'zabbix-dbname' failed: [0] could not connect to server: Permission denied
Is the server running on host "db-hostname" (192.168.0.1) and accepting
TCP/IP connections on port 5432?
25015:20150205:112656.236 Database is down. Reconnecting in 10 seconds.
但是在 DB 主机上,当我监控传入的 TCP 流量时,我看不到任何传入连接(使用 tcpdump 和 iptables)。看来 zabbix 甚至没有尝试向数据库框发出请求?
我已经拆除了我的 zabbix 盒并重新构建它,但两次出现相同的错误,所以这似乎是我的配置存在问题,有人知道有什么解决方案吗?
答案1
来自先前的评论:
我设法解决了这个问题,SE Linux 启用不正确,阻止了 zabbix 联网。为了解决这个问题,我运行了:
setsebool -P zabbix_can_network 1
讨论此问题的主题可以在以下位置找到(警告:俄语):http://zabbix.com/forum/showthread.php?t=47247
答案2
就我而言,我也需要授予 httpd 网络访问权限。(CentOS 7,zabbix 3)
sudo setsebool -P httpd_can_network_connect_db 1
sudo setsebool -P httpd_can_network_connect 1
如果出现错误“setsebool,未找到命令”,请安装 policycoreutils-python
yum install policycoreutils-python