zabbix agent的运行模式有以下两种:
1、被动模式:此模式为zabbix默认的工作模式,由zabbix server 向zabbix agent 发出指令获取数据,zabbix agent被动地去获取数据并返回给zabbix server,zabbix server会周期性地向agent索取数据。此模式的最大问题就是会增加zabbix server的工作量,在大量的服务器环境下,zabbix server不能及时获取到最新的数据。
2、主动模式:即由zabbix agent 主动采集数据并返回给zabbix server,不需要zabbix server 的另行干预,因此使用主动模式能在一定程序上减轻zabbix server的压力。
主动以及被动需要server端以及zgent端保持一致。
server主动去agent拿数据,agent得知道他会主动来,并且得给他。
不能一个主动来取数据,一个不给他,非要自己发过去。或者sever等着zgent上报数据,agent等着server来取数据。
所以在agent端设置同时允许agent主动上报数据以及server主动来取数据。
server2(agent)
[root@server2 ~]# cd /etc/zabbix/
[root@server2 zabbix]# vim zabbix_agentd.conf
98 Server=172.25.46.1 # 前来自己取agent数据的server端
122 StartAgents=3 # agent开启的进程
138 ServerActive=172.25.46.1 # # agent主动上报数据的服务端
149 Hostname=toto2 # 主机名称
[root@server2 zabbix]# systemctl restart zabbix-agent ## 重新启动zabbi-agent服务
zabbix server设置监控项为主动上报数据
当zabbix server端添加的监控项为主动上报数据,则zabbix server不会再去采集该监控项的数据,等待着被检控的主机agent主动上报数据。
如果没有主动上报数据的监控项,可以使用已经存在的模板创造一个。
配置->模板–>Template OS Linux)->全克隆
点击全克隆后个名字,添加
可以看见模版里有科隆的模版,点开选择客户端主动式
这时一个主动上报数据的监控项模板完成。将该模板连接到所需亚的主机就行了
配置----主机----server2----模板------取消已经存在的连接(如果不冲突的话可以直接添加)
选择-----选中自己创建好的主动上报数据的监控项模板----添加 ------更新
刚刚添加的监控项会自己上报数据到zabbix server 大大减轻了zabbix-server的压力
##使用proxy进行代理服务###
zabbix proxy可以代替zabbix server检测客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix proxy可以非常简便的实现了集中式、分布式监控
并且servee主需要和proxy进行数据传输,就可以得到所有监控数据的信息。在防火墙策略设置也比较简单。
Zabbix代理必须使用一个单独的数据库。 代理服务器收集的所有数据都会在本地存储,然后再发送到服务器。 这样就不会因为服务器的任何临时通信问题而丢失数据。
实验配置做好地址解析配置好yum源:
172.25.46.1 zabbix-server
172.25.46.2 zabbix-agent
172.25.46.3 proxy
server3:
安装服务代理和数据库
[root@proxy ~]# yum install -y zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
mariadb-server.x86_64 1:5.5.52-1.el7 [root@proxy ~]# systemctl start mariadb
[root@proxy ~]# mysql_secure_installation ##初始化
[root@proxy ~]# mysql -uroot -p ##数据库授权
Enter password:
MariaDB [(none)]> create database zabbix_proxy character set utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
[root@proxy ~]#cd /usr/share/doc/zabbix-proxy-mysql-4.0.5
[root@proxy zabbix-proxy-mysql-4.0.5]# zcat schema.sql.gz | mysql -p zabbix_proxy ##导入数据
Enter password:
修改peoxy文件
[root@proxy ~]# cd /etc/zabbix/
[root@proxy zabbix]# ls
zabbix_proxy.conf
[root@proxy zabbix]# vim zabbix_proxy.conf
30 Server=172.25.46.1
49 Hostname=proxy
173 DBName=zabbix_proxy
188 DBUser=zabbix
196 DBPassword=westos
329 JavaGateway=172.25.46.1
337 JavaGatewayPort=10052
345 StartJavaPollers=5
[root@proxy zabbix]# systemctl start zabbix-proxy.service
[root@proxy zabbix]# systemctl enable zabbix-proxy.service
[root@proxy zabbix]# netstat -antlp | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 12710/zabbix_proxy
tcp 0 0 172.25.46.3:10051 172.25.46.2:35962 TIME_WAIT -
tcp6 0 0 :::10051 :::* LISTEN 12710/zabbix_proxy
[root@proxy zabbix]# cat /var/log/zabbix/zabbix_proxy.log
agent端进行设置
主要是指定哪一个主机采集自己的数据。
修改配置文件:/etc/zabbix/zabbix_agentd.conf
[root@server2 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
[root@server2 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.46.3
139 ServerActive=172.25.46.3
[root@server2 zabbix]# systemctl restart zabbix-agent
三台虚拟机的解析:
[root@server2 zabbix]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.46.1 server1
172.25.46.2 server2
172.25.46.3 proxy
zabbix-server监控界面设置
创建agent代理程序
管理–agent代理程序–创建代理
给被代理主机添加agent代理程序
配置–主机–server2
zabbix server端:
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log
18989:20190712:082559.097 sending configuration data to proxy "proxy" at "172.25.46.3", datalen 28202 #将需要监控的数据发给代理端
zabbix-proxy
[root@proxy zabbix]# cat /var/log/zabbix/zabbix_proxy.log
12890:20190712:082559.518 received configuration data from server at "172.25.46.1", datalen 28202
12910:20190712:082604.786 enabling Zabbix agent checks on host "server2": host became available
12903:20190712:082612.650 enabling JMX agent checks on host "server2": host became available #对agent监控