使用zabbix proxy实现主动代理跨网段分布式监控

时间:2022-12-21 11:07:15

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、实验架构图

下面架构图还包括被动代理,在这篇文章我们演示的是主动代理的实现。这里是实现跨网段会涉及到路由,需要通过路由来打通跨网段的网络。 使用zabbix proxy实现主动代理跨网段分布式监控

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界面添加主动代理

使用zabbix proxy实现主动代理跨网段分布式监控使用zabbix proxy实现主动代理跨网段分布式监控使用zabbix proxy实现主动代理跨网段分布式监控

5.2、创建主机使用主动代理并关联监控相关模板

使用zabbix proxy实现主动代理跨网段分布式监控使用zabbix proxy实现主动代理跨网段分布式监控

5.3、在zabbix web界面验证监控数据

使用zabbix proxy实现主动代理跨网段分布式监控使用zabbix proxy实现主动代理跨网段分布式监控使用zabbix proxy实现主动代理跨网段分布式监控

总结

在实验中会遇到一些坑,如下:

  • 需要机器的防火墙和selinux要关了,而且还要将主机的时间都同步。
  • 跨网段中间需要用到路由的形式,这里我使用路由的方式就省略了,我是拿了个虚拟机充当路由来把网络打通。
  • 出现问题是不要慌,先看看日志,根据日志来解决问题。