Zabbix的主动模式与被动模式:
zabbix客户端分数据给服务端分为主被动两种模式
主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待服务端来取数据。

主动模式:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动模式:server向agent请求获取监控项的数据,agent返回数据。

实验前提:

已经完成了zabbix的安装部署(zabbix-server),并且添加了server2主机(zabbix-agent)


1.主被动模式监控

默认是被动的监控模式,即zabbix-server端主动连接zabbix-agent端;
当agent的数量太多时,server端连接压力过大,为了减少server端的开销,直接让agent端主动连接server端

实验环境:

server1:172.25.66.1  zabbix-server
server2:172.25.66.2  zabbix-agent
(1).主动模式

配置网页:

1.全克隆Template OS Linux模板

.

zabbix agent 被动主动 zabbix proxy被动模式_vim


zabbix agent 被动主动 zabbix proxy被动模式_mysql_02


zabbix agent 被动主动 zabbix proxy被动模式_数据库_03


zabbix agent 被动主动 zabbix proxy被动模式_mysql_04


zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_05


2.更新监控项:设定为zabbix-agent(客户端)主动连接模式

zabbix agent 被动主动 zabbix proxy被动模式_vim_06


zabbix agent 被动主动 zabbix proxy被动模式_数据库_07


zabbix agent 被动主动 zabbix proxy被动模式_数据库_08


zabbix agent 被动主动 zabbix proxy被动模式_mysql_09


zabbix agent 被动主动 zabbix proxy被动模式_mysql_10


zabbix agent 被动主动 zabbix proxy被动模式_mysql_11


3.将更新后的模板添加到server2主机中

zabbix agent 被动主动 zabbix proxy被动模式_mysql_12


zabbix agent 被动主动 zabbix proxy被动模式_vim_13


zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_14


zabbix agent 被动主动 zabbix proxy被动模式_vim_15


zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_16


配置agent端:

1.更改配置文件

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
#################
# Server=172.25.66.1   #关闭被动模式(拒绝zabbix-server主动连接zabbix-agent)
StartAgents=0          #禁用被动模式(二者需同时设定才能生效)

zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_17


zabbix agent 被动主动 zabbix proxy被动模式_数据库_18


2.重启zabbix-agent

[root@server2 ~]# systemctl restart zabbix-agent
#3.发现zabbix-agent服务端口消失
[root@server2 ~]# netstat -antlp | grep :10050

测试:


发现问题:查看主机,发现zabbix-agent主动连接失败,因为虽然server2主机添加过更新后的Template OS Linux模板(即:Template OS Linux - Active 模板),它设定的是主动连接,但我们可以发现此模板还有一个链接的Template App Zabbix Agent模板,但它并没有设定为主动连接模式,而zabbix-agent关闭了被动连接模式,故而出现连接失败问题

zabbix agent 被动主动 zabbix proxy被动模式_vim_19


解决问题:

方案1:更改Template App Zabbix Agent模板的连接方式为主动连接(操作同上),但这样显然很麻烦,如果链接模板很多,难道都一个一个的更改吗?这样显然效率很低

方案2: 在zabbix-agent端,更改连接方式为主被动连接均可(主被动模式),这种方式效率更高。

(2).主被动模式

配置agent端:

1.更改配置文件

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
#################
Server=172.25.66.1      #主被动连接同时开启
StartAgents=5

zabbix agent 被动主动 zabbix proxy被动模式_mysql_20


zabbix agent 被动主动 zabbix proxy被动模式_vim_21


2.重启zabbix-agent

[root@server2 ~]# systemctl restart zabbix-agent
#查看端口
[root@server2 ~]# netstat -antlp | grep :10050

zabbix agent 被动主动 zabbix proxy被动模式_mysql_22

测试:


1.刷新网页:发现此时server2主机(zabbix-agent端)主动连接zabbix-server成功

zabbix agent 被动主动 zabbix proxy被动模式_数据库_23


2.为了进一步验证,点击预览CPU图形,发现有数据,说明主动连接成功

zabbix agent 被动主动 zabbix proxy被动模式_vim_24


zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_25


zabbix agent 被动主动 zabbix proxy被动模式_数据库_26

2.添加proxy代理

默认是zabbix-server主动连接zabbix-agent,当agent端有防火墙阻挡时,而我们一般在实际生产环境中不能直接添加防火墙策略。所以此时proxy代理便显得尤为重要。
zabbix-server  ----->  zabiix-proxy  ------> zabbix-agent

proxy端先采集agent端的数据,server端直接连接proxy端获取数据即可,便无需server主动连接agent

实验环境:

server1:172.25.66.1  zabbix-server
server2:172.25.66.2  zabbix-agent
server3:172.25.66.3  zabbix-proxy

配置proxy端:

1.更改主机名

#更改主机名,便于区分
[root@server3 ~]# hostname proxy
[root@server3 ~]# hostname
proxy
[root@server3 ~]# exit
logout
Connection to 172.25.66.3 closed.
[root@foundation66 ~]# ssh root@172.25.66.3
root@172.25.66.3's password: 
Last login: Mon Mar 11 00:20:00 2019 from foundation66.localdomain

2.添加解析

所有server,agent,proxy结点都需要添加解析
#添加解析
[root@proxy ~]# vim /etc/hosts

zabbix agent 被动主动 zabbix proxy被动模式_数据库_27

#测试
[root@proxy ~]# ping -c1 -w1 proxy

zabbix agent 被动主动 zabbix proxy被动模式_mysql_28

[root@server1 ~]# vim /etc/hosts

zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_29

[root@server2 ~]# vim /etc/hosts

zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_30


3.在网页上添加proxy代理程序

zabbix agent 被动主动 zabbix proxy被动模式_数据库_31


zabbix agent 被动主动 zabbix proxy被动模式_vim_32


zabbix agent 被动主动 zabbix proxy被动模式_vim_33


4.下载并安装zabbix-proxy-mysql

安装包:

#依赖包
fping-3.10-1.el7.x86_64.rpm    
#proxy-mysql安装包  
zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
[root@proxy ~]# ls
fping-3.10-1.el7.x86_64.rpm  zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
[root@proxy ~]# yum install -y *

5.配置数据库

(1).安装并开启数据库

[root@proxy ~]# yum install -y mariadb-server
[root@proxy ~]# systemctl start mariadb

(2).初始化

#初始化,更改密码
[root@proxy ~]# mysql_secure_installation

(3).创建zabbix_proxy数据库并授权

[root@proxy ~]# mysql -uroot -pwestos
#创建数据库
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
#授权
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos';

zabbix agent 被动主动 zabbix proxy被动模式_数据库_34


(4)导入数据

[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.5/
[root@proxy zabbix-proxy-mysql-4.0.5]# ls
AUTHORS  ChangeLog  COPYING  NEWS  README  schema.sql.gz
#将数据导入zabbix_proxy数据库;-p表示数据库,而不是密码
[root@proxy zabbix-proxy-mysql-4.0.5]# zcat schema.sql.gz | mysql -u zabbix -p zabbix_proxy
Enter password:

(5)测试数据库

#若是能登陆,即说明数据库配置成功
[root@proxy zabbix-proxy-mysql-4.0.5]# mysql -u zabbix -p zabbix_proxy

zabbix agent 被动主动 zabbix proxy被动模式_数据库_35


6.配置proxy

[root@proxy ~]# cd /etc/zabbix/
#1.更改配置文件
[root@proxy zabbix]# vim zabbix_proxy.conf 
####################
Server=172.25.66.1         #指向zabbix-server(server主动连接proxy)
ServerPort=10051           #指定端口
Hostname=proxy             #本机的主机名(要做解析)

DBPassword=westos          #数据库密码

JavaGateway=172.25.66.1    #指定java网关(java-gateway服务器地址)      (注意:因为我之前做了监控java应用,若没有可以不写)
JavaGatewayPort=10052      #监听端口(java-gateway服务器端口)
StartJavaPollers=5         #java轮询器

zabbix agent 被动主动 zabbix proxy被动模式_mysql_36


zabbix agent 被动主动 zabbix proxy被动模式_mysql_37


zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_38

#2.开启zabbix-proxy
[root@proxy zabbix]# systemctl start zabbix-proxy
#查看端口
[root@proxy zabbix]# netstat -antlp | grep :10051

zabbix agent 被动主动 zabbix proxy被动模式_vim_39


7.查看日志

#查看日志,发现received(已接收),说明proxy配置成功
[root@proxy zabbix]# cat /var/log/zabbix/zabbix_proxy.log

zabbix agent 被动主动 zabbix proxy被动模式_数据库_40

#查看日志,发现sending(已发送)
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log

zabbix agent 被动主动 zabbix proxy被动模式_mysql_41


此时查看proxy代理程序的状态,发现为开

zabbix agent 被动主动 zabbix proxy被动模式_mysql_42


配置agent:

1.更改配置文件

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
#################
 98 Server=172.25.66.3
139 ServerActive=172.25.66.3

zabbix agent 被动主动 zabbix proxy被动模式_mysql_43


zabbix agent 被动主动 zabbix proxy被动模式_vim_44


2.重启zabbix-agent

[root@server2 ~]# systemctl restart zabbix-agent

3.在server2主机中添加proxy代理

zabbix agent 被动主动 zabbix proxy被动模式_zabbix agent 被动主动_45


zabbix agent 被动主动 zabbix proxy被动模式_vim_46


测试:

1.刷新网页,查看主机,发现proxy代理成功

注意: proxy:server2 仅表示server2主机添加了proxy代理,当可用性栏目中的ZBX和JMX为绿色(可用)时,才说明proxy代理成功

zabbix agent 被动主动 zabbix proxy被动模式_数据库_47

2.查看日志

#先重启zabbix-agent
[root@server2 ~]# systemctl restart zabbix-agent
#再查看日志,只要没有failed报错,即添加代理成功
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log

zabbix agent 被动主动 zabbix proxy被动模式_vim_48