【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的进阶知识~

相关推荐
无心水18 小时前
【分布式利器:腾讯TSF】6、TSF可观测性体系建设实战:Java全链路Metrics+Tracing+Logging落地
java·分布式·架构·wpf·分布式利器·腾讯tsf·分布式利器:腾讯tsf
予枫的编程笔记18 小时前
Elasticsearch聚合分析与大规模数据处理:解锁超越搜索的进阶能力
java·大数据·人工智能·分布式·后端·elasticsearch·全文检索
sww_102618 小时前
Kafka和RocketMQ存储模型对比
分布式·kafka·rocketmq
无心水18 小时前
【分布式利器:腾讯TSF】3、服务注册发现深度解析:构建动态弹性的微服务网络
网络·分布式·微服务·架构·分布式利器·腾讯tsf·分布式利器:腾讯tsf
十月南城18 小时前
分布式ID选型——雪花、号段、数据库自增与时钟回拨的风险控制
数据库·分布式
bentengjiayou18 小时前
Kafka和RabbitMQ相比有什么优势?
分布式·kafka·rabbitmq
IT大白18 小时前
5、Kafka面试相关问题
分布式·面试·kafka
qq_124987075320 小时前
基于SpringCloud的分布式演唱会抢票系统(源码+论文+部署+安装)
分布式·spring·spring cloud·毕业设计·计算机毕业设计
vx-bot55566620 小时前
1024proxy现代对抗性环境下的分布式流量调度系统架构设计
分布式·系统架构