Zabbix跨机房分布式部署proxy实战

概述

Zabbix proxy 是一个监控代理服务器,可以实现集中或者分布式的监控。通过proxy代理可以实现多节点,跨区域,成百上千服务器的监控。proxy代理主要适用于下面情况。

  • zabbix监控的主机太多,一台Server支撑不住的情况。
  • 服务器在同一个地区不同的机房,通过proxy很容易实现数据的传输和中转。
  • 服务器在多个省或者在国外,通过proxy实现分布式部署和监控。

proxy可以部署为主动(Active)模式或被动(passive)模式,通常为了减轻Server端的压力,proxy部署为主动(Active)模式。当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

安装配置

系统服务器IP角色
CentOS 7.6.181010.1.1.200zabbix-server
CentOS 7.6.181010.1.1.15(外)\172.16.1.15(内)zabbix-proxy
EulerOS 2.0172.16.1.240zabbix-agent

安装部署zabbix-proxy

在zabbix-proxy上:

1
yum -y install zabbix-proxy-mysql

proxy需要一个独立的数据库,请勿和server同库:

1
2
3
4
yum -y install mariadb-server
mysql -uroot -p
create database zabbix_proxy defaults charset utf8;
grant all privileges on zabbix_proxy.* to zabbix_proxy@'localhost' identified by '123456';

导入zabbix-proxy SQL:

1
2
cd /usr/share/doc/zabbix-proxy-mysql-4.0.27/
zcat schema.sql.gz |mysql -uzabbix_proxy -p zabbix_proxy

zabbix-proxy配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@bj_proxy ~]$grep ^[a-Z] /etc/zabbix/zabbix_proxy.conf    
ProxyMode=0 //默认主动模式0,被动模式1
Server=10.1.1.200 //zabbix_server的外网IP
ServerPort=10051
Hostname=bj_proxy //需要和主机名一致
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0 //不切割日志,默认1M
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy
DBSchema=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=123456
ConfigFrequency=600 //多久从zabbix-server接受配置
DataSenderFrequency=60 //多久向zabbix-server发送收集数据
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4 //等待agent回应超时时间
ExternalScripts=/usr/lib/zabbix/externalscripts //也需要放一份到代理
LogSlowQueries=3000

### 启动proxy
systemctl restart zabbix-proxy.service
systemctl enable zabbix-proxy.service

Agent安装配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wget https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.27-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-4.0.27-1.el7.x86_64.rpm
[root@euler ~]# grep ^[a-Z] /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1
Server=172.16.1.15
ServerActive=172.16.1.15
Hostname=Euler
Include=/etc/zabbix/zabbix_agentd.d/*.conf

### 启动agent
systemctl restart zabbix-agent.service
systemctl enable zabbix-agent.service

配置web界面

在我们的zabbix界面上点击管理–>agent代理程序–>创建代理
agent代理程序名称 为 zabbix_proxy的主机名 (建议一致 )

加速代理验证

1
2
3
4
5
6
7
8
9
## 重启server来加速
[root@zabbix ~]# systemctl restart zabbix-server.service
### 重启proxy
[root@bj_proxy ~]$systemctl restart zabbix-proxy.service
[root@bj_proxy ~]$tailf /var/log/zabbix/zabbix_proxy.log
60540:20210120:163621.926 only character set "utf8" and collation "utf8_bin" should be used in database
60540:20210120:163621.926 proxy #0 started [main process]
60545:20210120:163621.926 proxy #1 started [configuration syncer #1]
60545:20210120:163621.939 received configuration data from server at "10.1.1.200", datalen 3516

添加主机