简介

zabbix 作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替 zabbix server收集监控数据,然后把数据汇报给 zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server 的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。

另外zabbix proxy也区分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要向zabbix server周期性申请获取zabbix agent的监控项信息,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。

一个zabbix server可以有多个proxy,并且proxy也需要把数据临时存放在数据库中,每个proxy都有一个独立的数据库,proxy的大版本号需要与server保持一致;

apt安装proxy

1、wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb

2、dpkg -i zabbix-release_4.0-3+bionic_all.deb

3、apt update

4、apt install zabbix-proxy-mysql -y

5、cd /usr/share/doc/zabbix-proxy-mysql/

6、zcat schema.sql.gz | mysql -uzabbix_active -plinux -h192.168.3.203 zabbix_active
#把sql语句的压缩文件通过zcat输出到终端上,通过管道导入到zabbix_active库中,进行数据库表结构的初始化

编译安装proxy

1、cd /usr/local/src

2、tar xvf zabbix-4.0.18.tar.gz

3、cd zabbix-4.0.18/

4、apt install libmysqld-dev libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev curl libcurl4-openssl-dev openjdk-8-jdk -y   #安装yilde包

5、./configure --prefix=/apps/zabbix-proxy --enable-proxy --enable-agent --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml2
#编译安装agent,编译安装proxy,编译安装java gateway,编译安装java gateway之前需要安装jdk环境,否则环境检查时会报错;使用mysql、开启snmp、开启监控url

6、make && make install

数据库服务器:
1、mysql> create database zabbix_passive character set utf8 collate utf8_bin;
2、mysql> grant all privileges on zabbix_passive.* to zabbix_passive@'192.168.3.%' identified by 'linux';
#proxy也需要有自己的数据库

7、useradd zabbix

8、chown zabbix.zabbix /apps/zabbix-proxy/ -R

9、cd /usr/local/src/zabbix-4.0.18/database/mysql/

10、mysql -uzabbix_passive -plinux -h192.168.3.203 zabbix_passive < schema.sql 
#指定数据库,导入sql脚本,初始化proxy数据库的表结构,生成表;如果不导入sql脚本,启动proxy时会报没有表,查询不到

11、systemctl start zabbix-proxy

12、systemctl enable zabbix-proxy

准备proxy的service文件

root@test:~# vim /lib/systemd/system/zabbix-proxy.service
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/apps/zabbix-proxy/etc/zabbix_proxy.conf"
EnvironmentFile=-/etc/default/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid   #pid文件路径需要和proxy配置文件中的pid路径一致
KillMode=control-group
ExecStart=/apps/zabbix-proxy/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target

proxy配置文件

root@test:~# vim /apps/zabbix-proxy/etc/zabbix_proxy.conf
ProxyMode=0
#1是proxy工作在被动模式,0是工作在主动模式

Server=192.168.3.200
#允许指定地址的server到本机proxy抓取数据

ServerPort=10051
#指定server端口;被动模式下,将会忽略server的端口

Hostname=zabbix-proxy-linux-passive
#指定proxy的名称,此名称在zabbix server中需要是唯一的

ListenPort=10051
#proxy的监听端口也是10051

# SourceIP=
#多地址的情况下可以指定通信地址

DBHost=192.168.3.203
#指定proxy采集到的临时数据存放的数据库地址

DBName=zabbix_passive
#库名


DBUser=zabbix_passive
#账号

DBPassword=linux
#密码

ProxyLocalBuffer=720
#已经提交到zabbix server的数据保留时间,单位是小时,范围是1-720

ProxyOfflineBuffer=720
#因连接不上server,而未提交到zabbix server的数据保留时间

HeartbeatFrequency=120
#心跳间隔检测时间,被动模式将会被忽略;主动模式下,proxy将检测server是否存活;单位是秒,0-3600

ConfigFrequency=180
#主动模式下,proxy间隔多长时间向server获取监控项;单位秒,范围1-3600*24*7

DataSenderFrequency=30
#主动模式下,proxy间隔多长时间向server发送数据;单位秒,范围1-3600

StartPollers=5
#proxy开启几个进程收集数据

HistoryCacheSize=16M
#历史数据缓存大小;尽量大的分配空间

CacheSize=16M
#保存监控项而占用的最大内存

Timeout=30
#指定时间内,agent没把监控项的数据返回则超时

User=zabbix
#指定启动proxy的用户