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模板
.
2.更新监控项:设定为zabbix-agent(客户端)主动连接模式
3.将更新后的模板添加到server2主机中
配置agent端:
1.更改配置文件
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
#################
# Server=172.25.66.1 #关闭被动模式(拒绝zabbix-server主动连接zabbix-agent)
StartAgents=0 #禁用被动模式(二者需同时设定才能生效)
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关闭了被动连接模式,故而出现连接失败问题
解决问题:
方案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
2.重启zabbix-agent
[root@server2 ~]# systemctl restart zabbix-agent
#查看端口
[root@server2 ~]# netstat -antlp | grep :10050
测试:
1.刷新网页:发现此时server2主机(zabbix-agent端)主动连接zabbix-server成功
2.为了进一步验证,点击预览CPU图形,发现有数据,说明主动连接成功
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
#测试
[root@proxy ~]# ping -c1 -w1 proxy
[root@server1 ~]# vim /etc/hosts
[root@server2 ~]# vim /etc/hosts
3.在网页上添加proxy代理程序
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';
(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
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轮询器
#2.开启zabbix-proxy
[root@proxy zabbix]# systemctl start zabbix-proxy
#查看端口
[root@proxy zabbix]# netstat -antlp | grep :10051
7.查看日志
#查看日志,发现received(已接收),说明proxy配置成功
[root@proxy zabbix]# cat /var/log/zabbix/zabbix_proxy.log
#查看日志,发现sending(已发送)
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log
此时查看proxy代理程序的状态,发现为开
配置agent:
1.更改配置文件
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
#################
98 Server=172.25.66.3
139 ServerActive=172.25.66.3
2.重启zabbix-agent
[root@server2 ~]# systemctl restart zabbix-agent
3.在server2主机中添加proxy代理
测试:
1.刷新网页,查看主机,发现proxy代理成功
注意: proxy:server2 仅表示server2主机添加了proxy代理,当可用性栏目中的ZBX和JMX为绿色(可用)时,才说明proxy代理成功
2.查看日志
#先重启zabbix-agent
[root@server2 ~]# systemctl restart zabbix-agent
#再查看日志,只要没有failed报错,即添加代理成功
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log