当被监控的主机群组和zabbix-server的主机不在同一个地点是,间隔了2道防火墙不能通信,这时需要用到代理整合被监控端的数据然后“穿过”防火墙,发送到zabbix-server。
数据不直接发送到zabbix-server而是发送到代理,代理统一发送到另一地机房的防火墙,在防火墙做端口映射,就可以发送到了。
并且这时是主动模式,proxy可能是多个,用主动模式业算是降低了zabbix-server的压力。
配置zabbix-proxy:
1、安装软件的源,并安装软件。
zabbix-proxy-mysql zabbix-get zabbix-java-gateway mariadb-server mariadb
这堆
2、然后导入数据库。
3、配置proxy。
4、修改被监控的主机的服务端地址。
1、安装源和软件。
[root@localhost ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
warning: zabbix-release-3.4-2.el7.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.4-2.el7 ################################# [100%]
[root@localhost ~]# yum install zabbix-proxy-mysql zabbix-get zabbix-java-gateway mariadb-server mariadb -y
2、导入数据库。
[root@localhost yum.repos.d]# systemctl restart mariadb
[root@localhost yum.repos.d]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
创建数据库并指定字符集
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix@'localhost' identified by '000000';
创建用户分配权限
MariaDB [(none)]> flush privileges;
刷新权限列表
[root@localhost ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.4.15/
[root@localhost zabbix-proxy-mysql-3.4.15]# gunzip schema.sql.gz
[root@localhost zabbix-proxy-mysql-3.4.15]# mysql zabbix_proxy < schema.sql
MariaDB [(none)]> use zabbix_proxy
MariaDB [zabbix_proxy]> show tables;
140 rows in set (0.01 sec)
3、 修改javagateway的配置文件和proxy配置文件。
大体上和zabbix-server的配置文件类似,只有小地方不同
[root@localhost zabbix-proxy-mysql-3.4.15]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=50
[root@localhost zabbix-proxy-mysql-3.4.15]# vim /etc/zabbix/zabbix_proxy.conf
13 ProxyMode=0
//主动式,zabbix-proxy主动将监控数据传给zserver
24 Server=172.16.12.64
//指定zabbix-server的IP,或者填防火墙的IP
33 ServerPort=10051
//指定zabbix-server的端口,防火墙上某个端口
43 Hostname=SY-zabbix-proxy
//zabbix-proxy的名字,唯一的 可以是地区加名字
156 DBHost=localhost
//数据库的地址
167 DBName=zabbix_proxy
//数据库名字
182 DBUser=zabbix
//数据库的用户
190 DBPassword=000000
//数据库用户的密码
197 DBSocket=/var/lib/mysql/mysql.sock
//套接字文件的位置
204 DBPort=3306
//数据库端口
244 ConfigFrequency=3
253 DataSenderFrequency=1
//zabbix-proxy向zabbix-server发送数据的时间间隔,秒。默认3600秒,但是我为了快速的看到效果改成3秒了。
323 JavaGateway=localhost
331 JavaGatewayPort=10052
339 StartJavaPollers=50
//zabbix-server和java之间的连接数量
//START_POLLERS >= StartJavaPollers
启动服务
[root@localhost zabbix-proxy-mysql-3.4.15]# systemctl restart zabbix-java-gateway
[root@localhost zabbix-proxy-mysql-3.4.15]# systemctl enable zabbix-java-gateway
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-java-gateway.service to /usr/lib/systemd/system/zabbix-java-gateway.service.
[root@localhost zabbix-proxy-mysql-3.4.15]# systemctl restart zabbix-proxy
[root@localhost zabbix-proxy-mysql-3.4.15]# systemctl enable zabbix-proxy
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
4、修改被监控的主机
然后修改agent的配置文件。
我已经有很多个直接连zabbix-server的agent了,所以别的就不需要修改,只要修改这两项。
Server=172.16.12.70 //这个是zabbix-proxy代理的IP
ServerActive=172.16.12.70:10051 //这个也改成proxy的地址
agent指向代理。
创建代理项
这里的agent代理程序名称写在proxy配置文件中的hostname。
模式改为主动模式。
下边的主机在主机中添加。
修改主机中的这个位置。
这个位置就选择刚刚创建的agent代理程序。
然后就可以看到数据图形了。
刚画出来很少。单确实是出来了。
PS:代理时主动向zabbix-server发送数据,但是proxy本身也有数据库,可以看到软件安装时安装了zabbix-proxy-mysql,这个和服务端装的那个软件很像,服务端的是zabbix-server-mysql。就差了中间的proxy。
做了代理的agent和server数据流向是这样的,先流向proxy存储起来,等到时间达到一定程度,就是上边配置文件中的向server端发送数据的时间间隔,便将存储在proxy数据库中的数据发送到server中,然后擦掉本地数据。并且发送过程是主动模式,这样做就降低了server的压力,毕竟不用不断的向proxy发请求数据嘛,而且默认一个小时向server端发一次数据,也是为了这个原因。