1、zabbix proxy简述
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 server申请zabbix agent的监控项配置,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送监控指令,然后在通过zabbix proxy向zabbix agent发起请求获取监控数据。
功能 | zabbix proxy | zabbix server |
---|---|---|
轻量级 | 是 | 相对于重量级 |
图形界面 | 无 | 带有图形控制界面 |
独立工作 | 是,可以独立采集数据并存储 | 是,即数据采集、存储、分析、展示和为一体 |
维护 | 易维护,配置完后基本不需要管理 | 维护也不是很难 |
独立数据库 | 保留最近的少量数据 | 保留指定时间内的所有数据 |
报警通知 | 否,代理服务器是不发送邮件通知的 | 支持邮件、短信等告警机制 |
2、实验架构图
下面架构图还包括被动代理,在这篇文章我们演示的是主动代理的实现。这里是实现跨网段会涉及到路由,需要通过路由来打通跨网段的网络。
3、主动代理模式的zabbix-proxy安装及配置
root@zabbix-proxy-active:~# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1%2Bfocal_all.deb
root@zabbix-proxy-active:~# dpkg -i zabbix-release_5.0-1+focal_all.deb
root@zabbix-proxy-active:~# sed -i.bak 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/apt/sources.list.d/zabbix.list
root@zabbix-proxy-active:~# apt update
root@zabbix-proxy-active:~# apt -y install zabbix-proxy-mysql
创建初始数据库(这里我使用的数据库服务器还是zabbix server使用的数据库服务器)
root@mysql-server:~# mysql -uroot -pMysql@2022
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin;
mysql> create user 'proxy'@'192.168.%.%' identified by 'proxy@2022';
mysql> grant all privileges on zabbix_proxy_active.* to 'proxy'@'192.168.%.%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始化架构数据
root@zabbix-proxy-active:~# zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uproxy -p"proxy@2022" -h10.0.0.101 zabbix_proxy_active
修改zabbix proxy配置文件
root@zabbix-proxy-active:~# vi /etc/zabbix/zabbix_proxy.conf
root@zabbix-proxy-active:~# grep -Ev "^#|^$" /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0为主动也是默认值,1为被动
Server=10.0.0.100 #zabbix server服务器的地址或主机名
Hostname=zhang-proxy-active #代理服务器的名称,需要和zabbix server添加代理时的proxy名称要一致
ListenPort=10051 #zabbix proxy监听的端口
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
EnableRemoteCommands=1 #允许zabbix server执行远程命令
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBHost=10.0.0.101 #数据库服务器地址
DBName=zabbix_proxy_active #使用数据库名称
DBUser=proxy #连接数据库的用户名称
DBPassword=proxy@2022 #连接数据库用户的密码
DBPort=3306 #数据库端口
ProxyLocalBuffer=720 #已经提交到zabbix server的数据保留时间
ProxyOfflineBuffer=720 #未提交到zabbix server的数据保留时间
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,可设置范围0-3600秒,在被动模式不使用
ConfigFrequency=5 #间隔多少秒从zabbix server获取监控项信息
DataSenderFrequency=5 #数据发送时间间隔,默认时间是1秒,可设置范围1-3600秒,在被动模式不使用
StartPollers=20 #启动的数据采集器数量
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=2G #保存监控项而占用的最大内存
HistoryCacheSize=2G #保存监控历史数据占用的最大内存
HistoryIndexCacheSize=128M #历史索引缓存的大小
Timeout=30 #监控项超时时间,单位是秒
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000 #单位毫秒,指的是多久的数据库查询会被记录到日志中(慢查询)
StatsAllowedIP=127.0.0.1
修改完配置文件后需要重启一下zabbix proxy服务
root@zabbix-proxy-active:~# systemctl restart zabbix-proxy
root@zabbix-proxy-active:~# systemctl enable zabbix-proxy
4、zabbix-agent1安装zabbix agent及配置
root@zabbix-agent1:~# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1%2Bfocal_all.deb
root@zabbix-agent1:~# dpkg -i zabbix-release_5.0-1+focal_all.deb
root@zabbix-agent1:~# sed -i.bak 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/apt/sources.list.d/zabbix.list
root@zabbix-agent1:~# apt update
root@zabbix-agent1:~# apt install zabbix-agent
root@zabbix-agent1:~# vi /etc/zabbix/zabbix_agentd.conf
root@zabbix-agent1:~# grep -Ev "^$|^#" /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.100,192.168.3.100
ServerActive=192.168.3.100
Hostname=192.168.3.102
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
root@zabbix-agent1:~# systemctl restart zabbix-agent.service
root@zabbix-agent1:~# systemctl enable zabbix-agent.service
5、在zabbix web界面配置主动代理模式
5.1、zabbix web界面添加主动代理
5.2、创建主机使用主动代理并关联监控相关模板
5.3、在zabbix web界面验证监控数据
总结
在实验中会遇到一些坑,如下:
- 需要机器的防火墙和selinux要关了,而且还要将主机的时间都同步。
- 跨网段中间需要用到路由的形式,这里我使用路由的方式就省略了,我是拿了个虚拟机充当路由来把网络打通。
- 出现问题是不要慌,先看看日志,根据日志来解决问题。