提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
文章目录
- [一、Zabbix Server、Proxy、Agent 三者关系](#一、Zabbix Server、Proxy、Agent 三者关系)
- 二、分布式zabbix-proxy监控实战
-
- [2.1 实验环境介绍](#2.1 实验环境介绍)
- [2.2 部署zabbix-proxy](#2.2 部署zabbix-proxy)
- [2.3 部署zabbix-agent](#2.3 部署zabbix-agent)
- [2.4 把proxy加入 server](#2.4 把proxy加入 server)
- [2.5 把agent加入server](#2.5 把agent加入server)
- [2.6 创建监控项](#2.6 创建监控项)
- [2.7 验证取数路径](#2.7 验证取数路径)
一、Zabbix Server、Proxy、Agent 三者关系
Zabbix Server:核心控制节点 ,负责接收所有 Proxy 和直连 Agent 的数据,存储到数据库(如 MySQL),处理告警规则,提供 Web 监控界面
Zabbix Proxy:中间代理节点 ,相当于 Server 的"区域采集站",负责收集指定区域 Agent 的数据,缓存后批量转发给 Server,减轻 Server 压力,适合跨网段、大规模集群场景
Zabbix Agent:被监控端采集工具 ,部署在所有需要监控的主机上,负责采集系统资源、应用状态数据,可直连 Server 或通过 Proxy 转发数据
bash
#小规模环境下 Agent 直接和 Server 通信
┌─────────────────────────────────────────────────────────┐
│ Zabbix Server │
│ (核心:数据存储、告警、Web界面、接收Proxy/Agent数据) │
└───────────────────────┬─────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌──────────▼──────────┐ ┌──────────▼──────────┐
│ Zabbix Agent 节点 │ │ Zabbix Agent 节点 │
│ (直连Server,小规模)│ │ (直连Server,小规模)│
└─────────────────────┘ └─────────────────────┘
bash
#大规模环境下,Agent 需通过 Proxy 向 Server 传输监控数据
┌─────────────────────────────────────────────────────────┐
│ Zabbix Server │
│ (核心:数据存储、告警、Web界面、接收Proxy/Agent数据) │
└───────────────────────┬─────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌──────────▼──────────┐ ┌──────────▼──────────┐
│ Zabbix Proxy A │ │ Zabbix Proxy B │
│ (代理:区域数据采集、│ │ (代理:区域数据采集、│
│ 缓存,转发至Server) │ │ 缓存,转发至Server) │
└──────────┬──────────┘ └──────────┬──────────┘
│ │
┌──────────▼──────────┐ ┌──────────▼──────────┐
│ Zabbix Agent 节点 │ │ Zabbix Agent 节点 │
│ (被监控端:采集数据) │ │ (被监控端:采集数据) │
└─────────────────────┘ └─────────────────────┘
二、分布式zabbix-proxy监控实战
这里我打算部署如下结构:

2.1 实验环境介绍
这里先介绍一下我的环境
| IP地址 | 主机名 | 部署软件 | 节点作用及职责 | 安装配置状态 |
|---|---|---|---|---|
| 192.168.136.134 | zabbix-server | 1. Zabbix Server 2. Zabbix Agent 3. MySQL 4. Apache | 监控系统核心节点,负责接收各被监控节点上报的数据,同时承担数据存储、告警触发及监控面板展示的核心职责 | 已完成安装与配置 |
| 192.168.136.135 | zabbix-node1 | 1. Zabbix Agent 2. 业务被监控软件 | 业务侧被监控节点,通过Zabbix Agent采集本地系统资源与业务软件运行状态数据,并实时上报至Zabbix Server | 已完成安装与配置 |
| 192.168.136.138 | zabbix-node2 | 1. Zabbix Agent 2. 业务被监控软件 | 业务侧被监控节点,通过Zabbix Agent采集本地系统资源与业务软件运行状态数据,并实时上报至Zabbix Server | 待执行安装与配置 |
| 192.168.136.10 | zabbix-proxy | 1. Zabbix Agent 2. MySQL | Zabbix Server 代理节点,用于分担 Server 的数据采集压力,实现监控数据的本地缓存与转发 | 待执行安装与配置 |
其中把zabbix-node1加入到zabbix-server的监控列表中,这步操作在这篇文章中有详细记载,在此不再赘述https://blog.csdn.net/m0_63756214/article/details/156421867?spm=1001.2014.3001.5501
本文也不再演示MySQL安装,不清除的小伙伴可以查看这篇文章https://blog.csdn.net/m0_63756214/article/details/154007206?spm=1001.2014.3001.5501
2.2 部署zabbix-proxy
Zabbix官网:https://www.zabbix.com/cn
去zabbix官网选择适合自己系统的版本,选好后下拉就会看到官方安装教程

bash
[root@zabbix-proxy ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm #安装
[root@zabbix-proxy ~]# yum clean all
[root@zabbix-proxy ~]# yum -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-get
[root@zabbix-proxy ~]# mysql -uroot -p'Qing@123'
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin; #创建zabbix_proxy库
mysql> create user proxy@localhost identified by 'Proxy@123'; #proxy用户
mysql> grant all privileges on zabbix_proxy.* to proxy@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> flush privileges;
mysql> quit
Bye
[root@zabbix-proxy ~]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uproxy -p'Proxy@123' zabbix_proxy #导入初始数据
[root@zabbix-proxy ~]# mysql -uroot -p'Qing@123'
mysql> set global log_bin_trust_function_creators = 0;
mysql> flush privileges;
mysql> quit
Bye
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.136.134 # server 的IP
ServerPort=10051 # server 的端口
Hostname=zabbix-proxy # 主机名
ListenPort=10051 # proxy自己的监听端口
EnableRemoteCommands=1 # 允许远程命令
LogRemoteCommands=1 # 记录远程命令的日志
# 数据的配置
DBHost=localhost
DBName=zabbix_proxy
DBUser=proxy
DBPassword=Proxy@123
ConfigFrequency=30 # 多长时间,去服务端拖一次有自己监控的操作配置;为了实验更快的生效,这里设置30秒,默认3600s
DataSenderFrequency=1 # 每一秒向server 端发一次数据,发送频度
[root@zabbix-proxy ~]# systemctl start zabbix-proxy.service
2.3 部署zabbix-agent
同样去zabbix官网选择自己适合的系统,然后下拉按照教程操作
bash
#安装zabbix-agent
root@zabbix-node2:~# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu18.04_all.deb
root@zabbix-node2:~# dpkg -i zabbix-release_latest_6.0+ubuntu18.04_all.deb
root@zabbix-node2:~# apt update
root@zabbix-node2:~# apt install zabbix-agent
bash
#配置zabbix-agent
root@zabbix-node2:~# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.136.10 #被动模式 proxy的地址;这里还可以填上serverip,由于我待会需要验证数据是否经过proxy,所以这里我只填写proxy的ip
ServerActive=192.168.136.10 #主动模式 proxy的地址;这里还可以填上serverip
Hostname=zabbix-none1 #自定义本agent节点名称
UnsafeUserParameters=1 #是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=1 #是否允许别人执行远程操作命令
root@zabbix-node2:~# systemctl start zabbix-agent
root@zabbix-node2:~# systemctl enable zabbix-agent
2.4 把proxy加入 server


2.5 把agent加入server

添加完成后,可以看到两个node的颜色都是绿的

2.6 创建监控项
现在创建一个监控项,看看proxy能不能正确的将zabbix-node2的监控数据提交给zabbix-server


去"最新数据"中查看,可以看到成功收集到监控数据

2.7 验证取数路径
可能有小伙伴会疑惑:Zabbix Server 是直接从 zabbix-node2 取数,还是经过 zabbix-proxy 中转?接下来我们可以做个验证------目前 Zabbix 界面已能正常查看 zabbix-node2 的数据
bash
#现在zabbix-server上取数
#zabbix-node1是直连的zabbix-server,所以在zabbix-server中可以直接取到数据
root@zabbix-server:~# zabbix_get -s 192.168.136.135 -k "system.uptime"
371180
#zabbix-node2连接的是zabbix-proxy而不是zabbix-server,所以在zabbix-server中直接取不到zabbix-node2的数据
root@zabbix-server:~# zabbix_get -s 192.168.136.138 -k "system.uptime"
zabbix_get [107623]: Check access restrictions in Zabbix agent configuration
root@zabbix-server:~#
bash
#在zabbix-proxy上取数
#zabbix-node1没有经过zabbix-proxy代理,所以zabbix-proxy取不到数据
[root@zabbix-proxy ~]# zabbix_get -s 192.168.136.135 -k "system.uptime"
zabbix_get [5578]: Check access restrictions in Zabbix agent configuration
#zabbix-proxy能取到zabbix-node2的数据但是zabbix-server取不到数据,最终的结果是zabbix的界面上能取到数据;从侧面说明zabbix-node2的数据确实是经过zabbix-proxy转发的
[root@zabbix-proxy ~]# zabbix_get -s 192.168.136.138 -k "system.uptime"
366627
注:
文中若有疏漏,欢迎大家指正赐教。
本文为100%原创,转载请务必标注原创作者,尊重劳动成果。
求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~
后续还会分享更多关于zabbix的进阶知识~