2059 字
10 分钟
03-Zabbix-整体架构
Zabbix 6.4 分布式企业级性能监控平台
Zabbix 整体架构官网:https://www.zabbix.com/cn
一、了解Zabbix【扎-比斯】 程序组件
针对 Zabbix 性能监控管理平台,我们需要了解一些重要的服务进程,理解它们之间的协作机制,这样有助于我们在构建基础架构的时候,正确的选择并安装服务组件。同时我们也需要了解一些 Zabbix 自带的小工具软件,从而方便我们进行<功能性检测>或<临时性管理>。1. zabbix【扎-比斯】_server 守护程序
★ 它是:<Zabbix Server 核心服务端>的<守护程序>。★ 功能:(1) 发起<数据采集请求>,主动获取<被监控设备>的<性能指标数据>。 (2) 接收<数据采集汇报>,被动获取<被监控设备>的<性能指标数据>。 (3) 最终保存、展示、处理<收集到的性能指标数据>。2. zabbix【扎-比斯】_agentd【A 撞 特】
★ 它是:<Zabbix 客户端代理>的<守护程序>。★ 功能:针对<本机>执行<数据采集操作>,从而向<Zabbix Server 或 Proxy 服务器>提供<性能指标数据>。3. zabbix【扎-比斯】_proxy【普洛西】 守护程序
★ 它是:<Zabbix Proxy 分布式代理服务端>的<守护程序>,它是实现<分布式监控>的<重要环节>。★ 功能:(1) 代表<Zabbix Server 核心服务端>,对所辖范围内的<被监控设备>,执行<性能监控>。 (2) 代表<被监控设备>,将<收集到的性能指标数据>发送给<Zabbix Server 核心服务端>。4. zabbix【扎-比斯】_get【脚(白话)特】 命令行 服务端实用程序
★ 功能:向<Zabbix agent 客户端代理>发出<数据采集请求>。★ 安装: [root@zabbix-server ~]# dnf install -y zabbix-get ## 在<Zabbix Server/Proxy 服务端>安装 ★ 语法格式: zabbix_get -h ## 查看:命令帮助 zabbix_get -V ## 查看:命令版本#### 向<Zabbix Agent 客户端>发出<数据采集请求>,从而获取:指定<监控项>的<性能指标数据>。## zabbix_get [-I 服务端] -s 客户端 [-p 客户端端口] -k 键名★ 例句: [root@zabbix-server ~]# zabbix_get -s 192.168.168.19 -k system.hw.macaddr[ens33] [root@zabbix-server ~]# zabbix_get -I 192.168.168.18 -s 192.168.168.19 -p 10050 -k system.hw.macaddr[ens33] ↑ ↑ ↑ ↑ ↑ ↑ ↑ 指定:请求的<Key 键名>和<键参数> ↑ ↑ 指定:请求的<目标 port 端口> ↑ 指定:请求的<客户端目标 IP 地址> 指定:请求的<服务端源 IP 地址> [ens33] 00:0c:29:19:82:b45. zabbix【扎-比斯】_sender 是一个命令行工具
★ 功能:用于主动将监控数据发送到 Zabbix Server 或 Proxy。它通常在被监控主机上运行,配合脚本使用。★ 安装: [root@Zabbix_Agent ~]# # 在 CentOS/RHEL 系统上 [root@Zabbix_Agent ~]# yum install zabbix-sender [root@Zabbix_Agent ~]# # 在 Debian/Ubuntu 系统上 [root@Zabbix_Agent ~]# apt-get install zabbix-sender★ 语法格式:[root@Zabbix_Agent ~]# zabbix_sender -z <server_ip> -p <port> -s <hostname> -k <key> -o <value>| 参数 | 说明 |
|---|---|
-z | Zabbix Server 或 Proxy 的 IP 地址 |
-p | Zabbix Server 的端口,默认是 10051(不是 10050!) |
-s | 目标主机在 Zabbix Web 中的 Host name,必须完全一致 |
-k | 要发送的 Item 的 Key(必须在 Web 中创建为 “Zabbix trapper” 类型) |
-o | 要发送的数据值(value) |
★ 例句:#假设你想监控一台服务器的“磁盘空间使用率”,并在脚本中上报:#!/bin/bash# 检查磁盘使用率disk_usage=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
# 使用 zabbix_sender 发送zabbix_sender \ -z 192.168.1.100 \ -p 10051 \ -s "web-server-01" \ -k "disk.usage.percent" \ -o "$disk_usage"
在 Zabbix Web 中需预先创建:主机名:web-server-01Item Key:disk.usage.percentType:Zabbix trapper
#批量发送多个 key-value 对zabbix_sender \ -z 192.168.1.100 \ -p 10051 \ -s "web-server-01" \ -i /tmp/data.txt
其中 /tmp/data.txt 文件内容如下:disk.usage.percent 85cpu.load.avg 0.3memory.used.mb 1200与 zabbix_get 的对比
| 功能 | zabbix_get | zabbix_sender |
|---|---|---|
| 方向 | Server → Agent | Client → Server |
| 用途 | 从 Agent 拉取数据 | 向 Server 推送数据 |
| 端口 | 10050(Agent 端口) | 10051(Server 端口) |
| 数据类型 | 只能获取已配置的 item | 可推送任意 key-value |
| 使用场景 | 测试 Agent 是否正常 | 自定义监控、脚本上报 |
二、了解Zabbix【扎-比斯】 通讯机制
我们需要了解 Zabbix 性能监控管理平台中各个重要服务进程之间的通讯机制,从而指导我们在确保网络安全性的前提下,正确的配置防火墙规则。本章十分重要,在生产环境中,网络防火墙安全机制是必不可少的,请大家务必理解并牢记 Zabbix 通讯机制,从而掌握正确配置防火墙规则的指导思想。1. Zabbix【扎-比斯】 的两种<监视模式>
★ 被动模式:<数据采集方>主动向<数据提供方>查询<性能指标数据> ◀ 默认:已启动<被动模式>★ 主动模式:<数据提供方>主动向<数据采集方>汇报<性能指标数据> ◀ 默认:未启动<主动模式>
★ zabbix_server 是:<数据采集方>,其<侦听端口>默认为 10051/tcp(默认:未启用)。★ zabbix_agentd 是:<数据提供方>,其<侦听端口>默认为 10050/tcp。★ zabbix_proxy 是:<数据采集方>和<数据提供方>。 ♦ 作为<数据采集方>,其<侦听端口>默认为 10051/tcp(默认:未启用)。 ♦ 作为<数据提供方>,其<侦听端口>默认为 10050/tcp。2. Zabbix【扎-比斯】 组件间<通讯机制>

Zabbix 分布式整体架构 + 全链路通信端口
Zabbix 分布式整体架构(标准生产级)
┌─────────────────────────────────────────────────────────────────────┐│ Zabbix Server 集群 ││ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││ │ Zabbix Server│◄───│ Zabbix Web │ │ Database │ ││ │ (10051/tcp) │───►│ (80/443/tcp)│◄──►│ (3306/5432) │ ││ └─────────────┘ └─────────────┘ └─────────────┘ │└───────────────────────────┬─────────────────────────────────────────┘ │ (10051/tcp) ┌─────────────────┴────────────────┬───────────────────────┐ │ │ │┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐│ Zabbix Proxy 1 │ │ Zabbix Proxy 2 │ │ Zabbix Proxy N ││ (区域/机房/分支) │ │ (区域/机房/分支) │ │ (区域/机房/分支) ││ (10051/tcp) │ │ (10051/tcp) │ │ (10051/tcp) │└──────────┬───────────┘ └──────────┬───────────┘ └──────────┬───────────┘ │ (10050/10051/tcp) │ (10050/10051/tcp) │ (10050/10051/tcp)┌──────────┴───────────┐ ┌──────────┴───────────┐ ┌──────────┴───────────┐│ 被监控主机 │ │ 被监控主机 │ │ 被监控主机 ││ ┌─────────────────┐ │ │ ┌─────────────────┐ │ │ ┌─────────────────┐ ││ │ Zabbix Agent2 │◄─┘ │ │ Zabbix Agent2 │◄─┘ │ │ Zabbix Agent2 │◄─┘│ │ (10050/tcp) │ │ │ (10050/tcp) │ │ │ (10050/tcp) ││ └─────────────────┘ │ └─────────────────┘ │ └─────────────────┘│ SNMP(161/udp)/IPMI(623/udp) │ SNMP/IPMI/JMX │ │ JMX(1099)/自定义端口 │└──────────────────────────────┴───────────────────────────┴───────────────────────┘## 核心通信端口说明1. Agent ↔ Server/Proxy:10050/tcp(被动)、10051/tcp(主动)2. Proxy → Server:10051/tcp3. Web ↔ Database:3306/tcp(MySQL)、5432/tcp(PostgreSQL)4. Web 访问:80/tcp(HTTP)、443/tcp(HTTPS)5. 其他监控端口:161/udp(SNMP)、623/udp(IPMI)、1099/tcp(JMX)graph LRsubgraph 1开始[Zabbix 分布式整体架构]
subgraph a [Zabbix_Server 集群] direction RL 模块一.一[Zabbix_Server 192.168.88.18:10051] --> 模块一.二[Zabbix_Web 192.168.88.17:80 ] 模块一.二[Zabbix_Web 192.168.88.17:80 ] --> 模块一.一[Zabbix_Server 192.168.88.18:10051] 模块一.三[mysql 192.168.88.16:3306] --> 模块一.二[Zabbix_Web 192.168.88.17:80 ] end
subgraph b [Zabbix_Proxy 192.168.88.20:10051 可选]
end
subgraph c [Zabbix_Agent 192.168.88.30:10050/51] end
a -->|192.168.88.18:10051 下发配置| b b -->|192.168.88.20:10051 上传数据| a b -->|192.168.88.20:10050/TCP 被动拉取| c c -->|192.168.88.30:10051/TCP 主动推送| b
end核心通信端口(必须记住)
1)Agent【A 撞 特】 → Server / Proxy【普洛西】(主动/被动)
- **10050/tcp**:Agent 被动监听(Server/Proxy 主动拉数据)- **10051/tcp**:Agent 主动推送(Agent → Server/Proxy)2)Proxy → Server
- **10051/tcp**:Proxy 上报数据到 Server3)Web → Database
- **3306/tcp**:MySQL(默认)- **5432/tcp**:PostgreSQL4)Web 访问
- **80/tcp**、**443/tcp**:HTTP/HTTPS5)其他常用监控端口
- **161/udp**:SNMP- **623/udp**:IPMI- **123/udp**:NTP(时间同步)- **JMX 端口**:通常 1099、自定义一句话总结通信流向
- **被监控机** →(10051)→ **Proxy** →(10051)→ **Server**- **Server** →(10050)→ **Agent**(被动模式)- **Web** ←→ **DB**、**Web** ←→ 用户核心端口总结
| 通信方向 | 端口 | 协议 | 说明 |
|---|---|---|---|
| Agent ↔ Server/Proxy | 10050 | TCP | Agent 被动监听 |
| Agent → Server/Proxy | 10051 | TCP | Agent 主动推送 |
| Proxy → Server | 10051 | TCP | Proxy 上报数据 |
| Web → MySQL | 3306 | TCP | 数据库通信 |
| Web → PostgreSQL | 5432 | TCP | 数据库通信 |
| 用户 → Web | 80/443 | TCP | HTTP/HTTPS 访问 |
| 监控 → 网络设备 | 161 | UDP | SNMP 监控 |
★ 作业
-
请问:zabbix_get 命令的功能是什么?是在 Zabbix Server 端使用?还是在 Zabbix Agent 端使用? 答: 功能:向<Zabbix agent 客户端代理>发出<数据采集请求>。 在Zabbix Server 端使用。
-
请问:zabbix_sender 命令的功能是什么?是在 Zabbix Server 端使用?还是在 Zabbix Agent 端使用? 答: 功能: 主动向 Zabbix Server(或 Proxy)发送监控数据(item values)。 在 Zabbix Agent 端使用。
-
请画出:Zabbix 分布式整体架构图与通信端口
graph LRsubgraph 1开始[Zabbix 分布式整体架构]
subgraph a [Zabbix_Server 集群] direction RL 模块一.一[Zabbix_Server 192.168.88.18:10051] --> 模块一.二[Zabbix_Web 192.168.88.17:80 ] 模块一.二[Zabbix_Web 192.168.88.17:80 ] --> 模块一.一[Zabbix_Server 192.168.88.18:10051] 模块一.三[mysql 192.168.88.16:3306] --> 模块一.二[Zabbix_Web 192.168.88.17:80 ] end
subgraph b [Zabbix_Proxy 192.168.88.20:10051 可选]
end
subgraph c [Zabbix_Agent 192.168.88.30:10050/51] end
a -->|192.168.88.18:10051 下发配置| b b -->|192.168.88.20:10051 上传数据| a b -->|192.168.88.20:10050/TCP 被动拉取| c c -->|192.168.88.30:10051/TCP 主动推送| b
end 03-Zabbix-整体架构
https://fuwari.vercel.app/posts/zabbix监控/03-zabbix-整体架构/