文章目录
21. zabbix 分布式监控 proxy
应用场景
1)监控远程区域设备
2)监控本地网络不稳定区域
3)当 zabbix 监控上千设备时,使用它来减轻 server 的压力
4)简化分布式监控的维护
注意:zabbix_proxy的数据库必须与zabbix_server的数据库分开。不过可以同时在server端创建zabbix数据库与zabbix_proxy数据库,记得授权即可。
21.1 安装 proxy
下载 rpm包 可以参考 centos 7 安装 zabbix 4.0 方案
# 从清华的开源镜像下载
wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm --no-check-certificate
rpm -ivh zabbix-release-4.0-2.el7.noarch.rpm
# rpm 参数解释:
# i 安装软件包
# v 显示附加信息
# h 安装时输出哈希标记(``#'')
# 修改 vim /etc/yum.repos.d/zabbix.repo 配置文件,在文件中修改下载地址
:%s#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g
# 修改校验
:%s#gpgcheck=1#gpgcheck=0#g
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
# 安装 zabbix-proxy-mysql.x86_64
yum install zabbix-proxy-mysql.x86_64 -y
21.2 安装 mysql
yum install mariadb-server.x86_64 -y
# 启动数据库并设置开机自启
systemctl start mariadb.service
systemctl enable mariadb.service
# 优化数据库(这个可以做也可以不用,看使用需求)
mysql_secure_installation
# 创建 zabbix_proxy 数据库
create database zabbix_proxy default charset utf8;
# 创建 zabbix 用户,并授权 zabbix_proxy 数据库
grant all on zabbix_proxy.* to zabbix@localhost identified by 'Abcd@1234.';
21.3 导入数据
zcat /usr/share/doc/zabbix-proxy-mysql-4.0.40/schema.sql.gz | mysql -uzabbix -pAbcd@1234. zabbix_proxy
导入完成可以在数据库中查看是否导入成功
或者在命令行直接查看
mysql -uroot -pAbcd@1234. -e 'use zabbix_proxy;show tables;'
21.4 修改配置文件
vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0为主动, 1为被动
Hostname=zabbix-mysql #代理服务器名称,需要与zabbix server添加代理时候的proxy name是一致的!
Server=192.168.169.129 #zabbix server服务器的地址或主机名
DBHost=localhost #数据库服务器地址
DBUser=zabbix
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,范围0-3600秒, 被动模式不使用
ConfigFrequency=60 #间隔多久从zabbix server 获取监控信息
DataSenderFrequency=3 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用
ProxyLocalBuffer=3 #数据同步到server,数据还会保存多久,单位小时
ProxyOfflineBuffer=24 #未提交的数据保存多长时间
21.5 启动服务
systemctl start zabbix-proxy.service
systemctl enable zabbix-proxy.service
21.6 添加 proxy
管理 --> agent代理程序 --> 创建代理
21.7 配置内网 proxy 网络
测试说明:
本次测试使用 VMware station 安装的 centos 7
21.7.1 添加网卡
1)找到 proxy 所安装的机器
2)添加一个网络适配器
3)修改新添加的网络适配器
21.7.2 配置内网 ip
# 通过 ifconfig 查看添加网卡信息,ens37即为新添加的网卡名称
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.169.133 netmask 255.255.255.0 broadcast 192.168.169.255
inet6 fe80::78fb:49ed:61a6:b9fd prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:58:38:c5 txqueuelen 1000 (Ethernet)
RX packets 111372 bytes 43692207 (41.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 48224 bytes 6623852 (6.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::8099:ba25:d440:47bf prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:58:38:cf txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 5634 (5.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 6760 bytes 481901 (470.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6760 bytes 481901 (470.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 编辑网卡信息
# 1)将 ens33 复制 并改名为 ens37
# 2)修改 ens37 内容
# 如下内容为 ifcfg-ens37 文件内容
# 主要修改 NAME="ens37" DEVICE="ens37" IPADDR=172.16.0.20
# 网关,DNS 都不需要
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens37"
UUID="65edbbe7-3b88-42ca-be9e-062740d3a630"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=172.16.0.20
NETMASK=255.255.255.0
# ifcfg-ens37 文件修改完成后启动网卡
ifup ifcfg-ens37
[root@zabbix-mysql network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.169.133 netmask 255.255.255.0 broadcast 192.168.169.255
inet6 fe80::78fb:49ed:61a6:b9fd prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:58:38:c5 txqueuelen 1000 (Ethernet)
RX packets 116764 bytes 44097443 (42.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 51989 bytes 7115154 (6.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.20 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fe80::20c:29ff:fe58:38cf prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:58:38:cf txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 117 bytes 18814 (18.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 6760 bytes 481901 (470.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6760 bytes 481901 (470.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
21.8 配置内网 agent 网络
1)选择需要修改的 agent机器
2)将网络适配器修改成和 proxy 相同的内网网段(LAN区段)
# 修改网络配置
# 主要修改 IPADDR 将 ip 地址修改和 proxy 在同一网段
# 删除网关和DNS即可
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="65edbbe7-3b88-42ca-be9e-062740d3a630"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.16.0.21
NETMASK=255.255.255.0
# 重启网卡
systemctl restart network
# 测试网络是否联通(ping proxy 内网地址)
ping 172.16.0.20
21.8.1 agent 连接小技巧
在配置完成 agent 内网地址后,agent 和 xshell 是无法连接的,这时我们可以使用 proxy 的机器远程登陆 agent 机器
在 proxy 机器上使用如下命令
ssh root@172.16.0.21
21.8.2 修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.0.20 # 修改为 proxy 所在机器的内网地址
ServerActive=172.16.0.20 # 修改为 proxy 所在机器的内网地址
Hostname=172.16.0.21 # 修改为本机的 ip 地址,ip 地址一般具有唯一性,便于识别
# 重启 zabbix-agent
systemctl restart zabbix-agent.service
21.8.3 查看主机
说明:
本次测试的 agent 配置了自动注册,所以在 web 页面的主机里可以直接看到纳管的 agent
自动注册可以参考上面 19.2 内容
21.9 查看 proxy 日志
tail -f /var/log/zabbixsrv/zabbix_proxy.log