【Zabbix 分布式监控实战指南(附图文教程):Server/Proxy/Agent 三者关系解析 + Proxy 部署、Agent 接入及取数路径验证】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

文章目录

  • [一、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的进阶知识~

相关推荐
灯澜忆梦5 小时前
【RabbitMQ #10】 | MQ可靠性
分布式·rabbitmq
逐流人9 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
天天喝旺仔11 小时前
gRPC 底层原理:HTTP/2 多路复用、Protobuf 序列化与四种流模式
分布式·http·微服务·rpc
灯澜忆梦15 小时前
【RabbitMQ #5】 | 三大交换机 Fanout ,Direct ,Topic
分布式·rabbitmq·ruby
.冰块.17 小时前
Ceph 分布式存储实战(二):存储池管理与 cephx 认证授权
分布式·ceph·rados·纠删码·复本池·cephx认证与用户权限
我们从未走散19 小时前
从内存字典到租约内核:分布式上游账号池如何做到不超卖
分布式
.冰块.20 小时前
Ceph 分布式存储实战(一):架构入门与 cephadm 集群部署
分布式·ceph·架构·cephadm
j7~21 小时前
【Redis】《一文走完服务端高并发架构演进:从单机架构到 K8S 容器编排》
分布式·架构演进·服务端高并发分布式结构演进之路·架构基本概念·架构评价指标
Flynt21 小时前
把 bug tracker 塞进 git 仓库,同步和冲突怎么解决?我把 git-bug 拆开实测了一遍
分布式·git·开源