Zabbix6-LTS-Rocky9-实战部署博客
2026/8/17 21:18:59 网站建设 项目流程

一文带你掌握 Zabbix:从入门到实战部署(Rocky Linux 9.6 + Zabbix 6.0 LTS)

作者:zhang-hub-dd
环境:Rocky Linux 9.6(x86_64)/ Zabbix 6.0 LTS / MySQL 8.0
声明:本文为实战部署记录,所有命令均经过验证,可直接上手。


目录

  • 一、为什么要做监控

  • 二、Zabbix 是什么

  • 三、Zabbix 核心特性

  • 四、Zabbix 系统架构

  • 五、数据是怎么被采集上来的

  • 六、版本怎么选

  • 七、部署前环境准备

  • 八、部署 Zabbix Server

  • 九、部署 Zabbix Agent

  • 十、Web 前端初始化

  • 十一、添加监控主机与监控项

  • 十二、配置告警

  • 十三、分布式监控

  • 十四、grafana可视化

  • 十五、常见问题排查


一、为什么要做监控

运维的本质是"让业务稳定运行"。但在真实的生产环境中,服务器少则几十台、多则上千台,靠人肉盯topdf -hping显然不现实。等到业务方反馈"页面打不开了"才发现问题,往往损失已经造成。

监控要解决的核心问题就三个:

  1. 先知先觉—— 在故障发生之前预警(如磁盘快满了、内存持续飙高);
  2. 快速定位—— 故障发生后,第一时间缩小故障范围(是网络、主机、还是应用?);
  3. 数据支撑—— 用历史趋势数据做容量规划(什么时候该扩容?)。

而 Zabbix,就是业内最流行的开源监控解决方案之一。


二、Zabbix 是什么

Zabbix是一个基于GPL v2协议的开源分布式监控系统,由拉脱维亚的 Alexei Vladishev 于 2001 年创建,现由 Zabbix SIA 维护,至今已有 20 余年历史。

它具备监控、采集、告警、可视化、报表等一整套能力,官方宣称可以支持:

  • 数十万监控项的采集
  • 上千台甚至更多的设备纳管
  • 覆盖服务器 / 虚拟机 / 网络设备 / 数据库 / 中间件 / 云资源 / 容器等多种对象

一句话概括:Zabbix 是一个"采、存、算、显、告"一体化的开源监控平台。


三、Zabbix 核心特性

特性说明
数据采集支持 Agent、SNMP、IPMI、JMX、SSH、Telnet、HTTP、ODBC、自定义脚本等十几种方式
实时监控秒级、分钟级采集周期可自由配置
强大告警触发器(Trigger)表达式灵活,支持邮件、钉钉、企业微信、飞书、短信、脚本等告警介质
可视化内置仪表盘、图形、地图、幻灯片轮播,支持自定义
数据存储基于关系型数据库(MySQL / PostgreSQL / Oracle),历史数据可落库与归档
分布式通过 Proxy 实现分布式监控,支持大规模横向扩展
高可用支持 Server 集群 + 数据库集群,实现高可用部署
开放 API提供 JSON-RPC 风格的 HTTP API,方便二次开发与平台对接
多语言官方支持中文等多种语言的 Web 界面
权限体系基于用户组/角色的细粒度权限控制,支持多租户

解析:这张表里最值得关注的是"数据采集方式多"和"开放 API"两条。采集方式多意味着你几乎不需要写轮子——网络设备走 SNMP、Java 应用走 JMX、老机器走 SSH,都能接进来;而 API 则是 Zabbix 能融入现有自动化平台(CMDB、工单系统、发布系统)的关键。


四、Zabbix 系统架构

核心组件及其职责:

组件作用
Zabbix Server大脑。负责数据采集调度、触发器计算、告警发送、报表生成,常驻进程zabbix_server
Database数据仓库。存储配置信息、采集到的历史数据、趋势数据。生产环境建议独立部署
Web Frontend基于 PHP 的 Web 管理界面,负责可视化展示与操作配置
Zabbix Agent安装在被监控主机上的采集探针,支持 Linux/Windows/macOS 等
Zabbix Proxy分布式代理,替 Server 分摊采集压力,适合跨机房、大并发场景
Zabbix Java Gateway专门用于采集基于 JMX 的 Java 应用(如 Tomcat、Kafka)指标
Zabbix Get命令行工具,用于从 Agent 手动取数,是排障利器

端口约定(务必记住,防火墙配置要用):

  • 10050/TCP—— Agent 监听,供 Server 被动拉取数据(或被 Proxy 拉取)
  • 10051/TCP—— Server 监听,接收 Agent 主动上报和 Proxy 转发
  • 80 / 8080/TCP—— Web 前端访问端口

解析:排障时只要抓住两个端口就够了——“谁拉谁的数据,谁就监听谁”。Server 要被动拉数据 → 它主动连 Agent 的10050;Agent 主动上报 → 它连 Server 的10051。下文排查小节会反复用到这个思路。


五、数据是怎么被采集上来的

Zabbix 的采集模型可以用一句话概括:Host(主机)→ Item(监控项)→ Trigger(触发器)→ Action(动作)→ 告警/执行

Host(主机) ──定义──> Item(监控项) ──超过阈值──> Trigger(触发器) │ ▼ Media(告警介质) <──发送── Action(动作) <──条件匹配──┘

两种核心采集模式:

  • 被动模式(默认):Server 按周期主动向 Agent 发起请求,Agent 把结果回传。适合主机数量不多、Server 压力可控的场景。
  • 主动模式:Agent 周期主动向 Server(或 Proxy)上报数据。适合大规模场景,能把采集压力分摊到 Agent 端。

常见的监控项类型(Item type):

类型适用场景
Zabbix agent默认探针采集(CPU、内存、磁盘、网络等)
Zabbix agent (active)主动模式采集
SNMP agent交换机、路由器、防火墙等网络设备
IPMI服务器硬件传感器(温度、风扇、电源)
JMXJava 中间件指标
HTTP agent网页状态码、响应时间、接口可用性
Simple checkTCP 端口存活、ICMP ping 等
SSH / Telnet无法装 Agent 时的远程命令采集
DB monitor直接查询数据库性能指标
External check / Script自定义脚本(zabbix 万能扩展点)

解析:这条链路是 Zabbix 的"神经反射弧"。Item 决定"采什么"Trigger 决定"什么时候算异常"Action 决定"异常了通知谁、怎么通知"。后续部署你会亲手把这条链路走一遍,那时候再回来看这张图会非常清晰。


六、版本怎么选

Zabbix 的版本节奏分为两类:

版本类型发布节奏支持期适用场景
LTS(长期支持)约每两年一次(6.0、7.0……)约 5 年(+1 年扩展支持)生产环境首选
标准版约每半年一次(6.2、6.4、7.2……)发布至下一个版本 + 约 1 个月尝鲜新特性、测试环境

本实验为什么选 Zabbix 6.0 LTS?

  • 6.0 是首个完整支持MySQL 8.0的 LTS 版本,与本文环境(Rocky 9.6 + MySQL 8.0)完全匹配;
  • 官方标准支持期覆盖到 2026 年,另有扩展支持,生产环境可放心用;
  • 中文资料、模板、社区讨论最丰富,遇到问题最容易搜到答案。

解析:判断"该不该升 7.0 LTS"只看一件事——你的历史数据、模板、二次开发代码是否兼容。Zabbix 升级后zabbix_server.conf和模板基本都是向后兼容的,但 API 调用和自定义脚本要回归测试。生产环境跟着 LTS 走、测试环境大胆用新版本,是通用策略。


七、部署前环境准备

7.1 环境要求

项目建议
操作系统Rocky Linux 9.6 x86_64
CPU / 内存测试环境 2C / 4G 足够
磁盘50G+(历史数据很吃磁盘)
数据库MySQL 8.0(Rocky 9.6 官方镜像源版本)
Zabbix6.0 长期维护版本

7.2 网络规划

本文规划两台机器:

主机名IP角色
server1192.168.40.141Zabbix Server + MySQL + Web 前端
server2192.168.40.142被监控主机(Agent)

7.3 基础环境初始化(两台机器都执行)

# 1. 关闭 SELinuxsed-i's/^SELINUX=.*/SELINUX=disabled/'/etc/selinux/config# 2. 关闭并禁用 firewalldsystemctl disable--nowfirewalld# 3. 设置时区与时间同步(监控数据时间错乱是很多"灵异问题"的根源)timedatectl set-timezone Asia/Shanghai dnfinstall-ychrony&&systemctlenable--nowchronyd timedatectl set-ntptrue# 4. 设置主机名(分别设置)hostnamectl set-hostname server1# 141 执行hostnamectl set-hostname server2# 142 执行

解析:① 不关 SELinux 的话,Zabbix 官方提供了zabbix-selinux-policy包来放行,但实验环境直接关闭最省事;②时间同步务必做——Zabbix 触发器判断异常靠的是时间序列,Server 和 Agent 时差过大,会导致数据"看起来"断档或误报。

7.4 下载入口

Zabbix 官方提供安装向导,选好6.0 / Rocky Linux / 9 / MySQL / Apache后会直接给你可复制的命令:

zabbix官网安装地址


八、部署 Zabbix Server

8.1 添加官方源并安装组件(192.168.40.141)

  1. 选择合适的下载版本和服务,官方会提供相应的安装方式在下面
  2. 执行安装 zabbix 组件步骤

对应到命令行,就是这几步:

# 安装 zabbix-release 包:写入官方 yum 源 + 导入 GPG 密钥rpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm dnf clean all# 安装 Server(连 MySQL)+ Web 前端(PHP)+ Apache 配置 + 数据库初始化脚本dnfinstall-yzabbix-server-mysql zabbix-web-mysql zabbix-apache-conf\zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

解析:逐个说清楚装了什么——

  • zabbix-server-mysql:核心的zabbix_server守护进程;
  • zabbix-web-mysql:PHP 编写的 Web 前端程序;
  • zabbix-apache-conf:自动在 httpd 下生成/etc/httpd/conf.d/zabbix.conf虚拟主机配置;
  • zabbix-sql-scripts:数据库初始化脚本(server.sql.gz),里面是表结构和内置模板数据;
  • zabbix-selinux-policy:SELinux 放行策略(虽然实验关了 SELinux,装上无害);
  • zabbix-agent:连 Server 自己也要被监控,顺手装上。

8.2 初始化 MySQL 数据库

  1. 初始化 mysql 数据库
mysql-uroot-p
-- 建库,字符集必须 utf8mb4(支持中文/emoji,图形标题中文不乱码)CREATEDATABASEzabbixCHARACTERSETutf8mb4COLLATEutf8mb4_bin;-- 建专用账号,生产环境别用 root 连 ZabbixCREATEUSER'zabbix'@'localhost'IDENTIFIEDBY'Zabbix@123';GRANTALLPRIVILEGESONzabbix.*TO'zabbix'@'localhost';-- 允许导入脚本里创建存储函数(见下方解析)SETGLOBALlog_bin_trust_function_creators=1;QUIT;

导入官方预生成的表结构与初始数据:

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz|\mysql --default-character-set=utf8mb4-uzabbix-p'Zabbix@123'zabbix# 导入完成后立刻关回安全值mysql-uroot-p-e"SET GLOBAL log_bin_trust_function_creators = 0;"

解析:为什么一定要log_bin_trust_function_creators = 1server.sql.gz里有存储函数(如nan())。MySQL 为了安全,默认不允许在未指定DETERMINISTIC等属性时创建函数,此时直接导入会报ERROR 1419 (HY000)。临时打开这个开关再导入,成功后务必关回 0,避免留下安全敞口。

顺带一提:server.sql.gz里不止有表结构,还预置了大量官方监控模板(Linux、MySQL、Nginx……),这就是后面"模板直接套用"的数据来源。

8.3 配置 Server 连接数据库并启动服务

  1. 为 zabbix 配置 mysql,然后重启服务。注:rocky9 自带 php 和 httpd 服务
# 在 zabbix_server.conf 里写入数据库密码(默认是注释掉的)sed-i's/^# DBPassword=/DBPassword=Zabbix@123/'/etc/zabbix/zabbix_server.confgrep'^DBPassword'/etc/zabbix/zabbix_server.conf# 确认已生效# 启动并开机自启systemctlenable--nowzabbix-server zabbix-agent httpd php-fpm systemctl status zabbix-server# active (running) 即成功

验证监听端口:

ss-lntp|grep-E'10051|10050|:80\s'# zabbix-server 监听 10051,zabbix-agent 监听 10050,httpd 监听 80

解析:Rocky 9 的 httpd 与 php-fpm 由系统自带,无需再装 LAMP。改完配置后 Zabbix 首次启动会自动连接 MySQL 做一次版本检查,如果 8.2 里库没导成功,这里zabbix-server会反复重启并报Cannot connect to database——看到这个报错先回 8.2 排查,别急着改别处

  1. 部署成功


九、部署 Zabbix Agent

9.1 安装并配置 Agent(192.168.40.142)

# 与 Server 端相同:先加官方源rpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm dnfinstall-yzabbix-agent

修改配置:

vim/etc/zabbix/zabbix_agentd.confServer=192.168.40.141# 被动模式:允许哪些 Server 来拉数据(白名单)ServerActive=192.168.40.141# 主动模式:Agent 主动上报给哪个 ServerHostname=server2# Agent 自己的主机名,必须与 Web 端创建的主机名一致

Hostname是Agent 自己的主机名,必须与 Web 端创建的主机名一致,sever要依靠这个连接agent,web网页,主机名,conf配置文件,三者必须一致。

启动并验证:

systemctlenable--nowzabbix-agent.service ss-lntp|grep10050# 确认 Agent 已监听

解析:很多人分不清ServerServerActive。其实它们对应两种采集模式——

  • Server=是被动模式的白名单:它告诉 Agent"允许谁来主动连接我"。如果配错成 Agent 的 IP,Server 来拉数据会被拒绝;
  • ServerActive=是主动模式的目标地址:告诉 Agent"我主动把数据报给谁"。

所以"Server 里写 Server 的 IP、ServerActive 里也写 Server 的 IP"通常就对了。Hostname必须和 Web 端创建主机时填的主机名完全一致,这是主动模式对账的依据,差一个字符都取不到数据。

9.2 在 Web 端添加主机(接入 Agent)

路径:监测 → 主机 → 创建主机,填写:

配置项填写内容
主机名称server2必须与 Agent 配置文件里的 Hostname 一致
可见的名称Agent02-业务机(随便起,用于显示)
群组新建或选择Linux servers
接口Agent,IP192.168.40.142,端口10050

添加成功:

💡绿色 ZBX 图标= Agent 连接正常;灰色= 暂时无数据;红色= 采集失败(多半是防火墙、端口、Hostname 不一致导致)。

解析:这里最容易踩的坑是"接口"栏。接口(Interface)是给被动模式用的——Server 要知道去哪个 IP:端口 拉数据;而主机名称(Host name)是给主动模式对账用的。两种模式都配的情况下,两个字段都别省。如果后面发现"灰色 ZBX",zabbix_get -s 192.168.40.142 -k agent.ping一下,一步就能定位是网络不通还是名字对不上。


9.3 agent模式

主动模式

  • Agent 主动发起连接,去找 Zabbix Server,Server 监听 10051 端口
  • Server 接收数据存入数据库,Server 不会主动连 Agent
  • 主动模式下,Web 界面主机监控项类型要改成Zabbix agent(active),不能继续用被动的 Zabbix agent
  • 主动模式只需要 agent 出站访问 10051,不需要 server 入站访问 agent 机器

被动模式

  • Server 发起 TCP 连接,访问 Agent 的 10050 端口 ,Agent 收到请求,采集本机数据,把结果返回给 Server
  • Agent 数量巨大时,Server 会大量创建连接,压力上涨

** 主动模式下常常需要搭配被动模式模板使用,主动模式下不会去检测agent的10050端口,所以单独使用主动模板下,agent的状态会显示为未知

十、Web 前端初始化,

10.1 配置 PHP 时区

sed-i's/^; php_value\[date.timezone\].*/php_value[date.timezone] = Asia\/Shanghai/'\/etc/php-fpm.d/zabbix.conf systemctl restart php-fpm

解析:Zabbix Web 前端用 PHP 生成,PHP 未设置时区会直接抛date.timezone相关报错,并且所有图形的时间轴都会偏移。改完必须重启 php-fpm(不是 httpd),配置才会被重新加载。

10.2 添加 PHP 页面汉化与中文字体

  1. 添加 php 页面汉化

  2. 安装中文字体(图形标题里的中文才不会显示成方块)

dnfinstallglibc-langpack-zh-ylocalectl list-locales|grepzh_CN

解析:Zabbix 的语言包由系统 locale 提供。只装glibc-langpack-zh还不够直观——如果后续图形标题中文乱码,多半是Web 界面语言没切到中文(右上角头像 → 语言)或字体缺失(需安装wqy-microhei之类的字体到/usr/share/fonts)。实验环境装上中文 locale 即可满足绝大多数展示。

10.3 首次登录

浏览器访问http://192.168.40.141,默认账号Admin,密码zabbix

解析:首次登录系统会强制修改 Admin 密码,这是安全基线,别跳过。登录后建议先去管理 → 一般 → 用户界面把默认语言切成中文,后续操作体验会好很多。


十一、添加监控主机与监控项

这一章开始把"采集→判断→展示"真正落地到 Web 上,建议对照第五节的数据流模型一起看。

11.1 添加监控项:CPU 每分钟负载

路径:配置 → 主机 → 监控项 → 创建监控项

  • 创建一个 cpu 每分钟负载的监控项:

  • 测试消耗 CPU 的命令(制造负载,用来验证采集):
md5sum /dev/zero# 多开几个终端并行执行,能看到 load 立刻飙高

解析:监控项(Item)是 Zabbix 的最小采集单元,核心就两个字段——Key 和间隔

  • Key决定"采什么"。CPU 负载的 key 是system.cpu.load[percpu,avg1],中括号是参数:percpu表示按每核归一化、avg1表示取 1 分钟平均。这样配置的好处是:多核机器 load 不会虚高(8 核 load 8 才算满)。
  • 间隔决定"多久采一次"。CPU 这种秒级变化的数据可以设 10~30s,磁盘容量这种变化慢的设 1~5min 就够,别把 Server 和数据库拖垮。

11.2 添加根分区监控项

  • 根分区使用量:

  • 根分区剩余空间百分比:

解析:磁盘类 key 统一用vfs.fs.size[/,used]这种格式,中括号第一个参数是挂载点,第二个是取值维度:

  • used:已用字节;free:剩余字节;pfree:剩余百分比;total:总容量。

建议同时监控used(看绝对增长)和pfree(看相对水位),触发器一般挂在pfree上("低于 5% 报警"比"已用 45G 报警"更有普适性)。

11.3 为监控项添加触发器

路径:配置 → 主机 → 触发器 → 创建触发器

  • cpu 负载过高触发器:

  • 根分区空闲空间低于 95% 触发器(即剩余空间不足 5%):

解析:触发器(Trigger)是异常判定规则,核心就是表达式last(/主机名/key) > 阈值。几个高频用法:

  • last(/server2/system.cpu.load[percpu,avg1]) > 3:最近一次负载 > 3;
  • min(/server2/... ,5m) > 3:最近 5 分钟最小值仍 > 3,防止瞬时抖动误报;
  • max(...,1h) < 阈值反向用,比如"CPU 持续低"也可以告警。

实战建议给表达式加5m 或 10m 的窗口(如min(...,5m)),否则 CPU 一瞬间飙高就会连环告警刷屏。

11.4 添加监控图形

路径:配置 → 主机 → 图形 → 创建图表

  • cpu 负载的图形表示:

  • 执行 cpu 负载测试命令后,查看图形:

解析:图形(Graph)是把监控项组合展示的层。一个图形里可以画多条线的多个 item(比如把 CPU 的 1/5/15 分钟负载画在一张图里对比)。它不产生额外数据,纯粹是查询历史数据做可视化。数据来源有两条:**历史数据(History)**保留原始值、**趋势数据(Trends)**是降采样后的汇总——图形默认用的是趋势数据,所以看"大趋势"很正常,要精确到秒级请切"历史"视图。

11.5 添加模板

  • 创建新模板,路径:配置 → 模板 → 创建模板

  • 为新创建的空模板添加配置:

  • 新模板成功添加三条监控项配置:

解析:模板(Template)是 Zabbix 批量纳管的灵魂——一个模板 = 一组 Item + Trigger + 图形的集合。给主机挂上模板,等于一次性灌入整套监控规则。生产里你不会给每台机器手敲几十个 item,而是:

  1. 官方模板直接套(装好zabbix-sql-scripts时自带的Linux by Zabbix agent等);
  2. 自己建的"业务模板"(如"MySQL 巡检"“Nginx 状态”)复制给同构机器。

注意:模板修改会同步到所有挂它的主机,这既是优点(一处改、处处生效)也是风险(改坏了全挂),改模板前建议先复制一份再改。

11.5 添加发现动作和自动注册

  1. 先启用发现动作,再启动自动发现规则

zabbix-server 主动扫描规则内的网络,找存活设备,发现之后根据动作对应的操作进行添加主机,连接模板等相应的操作。

  1. 自动注册

agent主动上报给server,申请注册主机。所以需要修改agent的配置文件,添加元数据配置.,这样agent启动后,主动向server发送携带元数据(主机名,主机元数据)的注册请求


  • 配置agent元数据

十二、配置告警

监控只有加上告警才算闭环

12.1 配置告警媒介(以邮件为例)

  1. 启用触发器动作,路径:配置 → 动作 → 触发器动作

zabbix自带的触发器动作是默认向zabbix组中所有用户发送全部问题,如果需要配置用户自己的报警,需要单独设置1触发器动作。

  1. 为用户配置收件邮箱,路径:管理 → 媒介 → Email

解析:告警介质(Media)是"用什么通道发"。默认内置 Email、脚本、短信等类型。Email 类型里最关键的是 SMTP 配置(服务器、端口、认证、发件人邮箱),配完先点"测试发送"验证一遍,别等真出故障才发现发不出去。

  1. 启用用户收件邮箱,路径:管理 → 用户 → 点击 Admin → 告警媒介 → 添加,填入接收邮箱:

解析:介质配好 ≠ 用户会收到。每个用户要手动绑定介质(填自己的接收邮箱),并且可以设置"启用时间段"和"严重级别过滤"。很多人配完动作没反应,八成是介质没绑定到用户这一步漏了。

12.2 为触发器添加动作

  • 为前面配置的 cpu 负载过高触发器添加动作,路径:配置 → 动作 → 触发器动作 → 创建动作

  • 为动作添加相应操作:

  • 添加成功:

解析:动作(Action)是"条件 + 操作"的规则:条件(哪些主机、哪些触发器、什么级别)命中后,执行操作(发给哪些用户/群组、走哪种介质、发什么内容)。{TRIGGER.NAME}{HOST.NAME}这些是 Zabbix 内置的,在操作内容里直接引用就能自动填充实际值,告警内容会专业很多。

12.3 添加用户组及用户

  • 添加用户组,路径:管理 → 用户群组 → 创建用户组

  • 给新创建的用户组添加用户,路径:管理 → 用户 → 创建用户,同时也可以设定用户的报警介质:

  • 测试新用户登录:

解析:用户组(User Group)承载权限边界——给组分配"只读 / 读写的对象范围",组里的用户继承权限。生产环境的做法是:监控只看图 → 只读组;要改监控项 → 运维组。新建用户默认无任何权限,必须挂到组里才有东西可看。

12.4 告警链路验证

  • 用压测制造一次 CPU 告警,验证整条链路:
md5sum /dev/zero# 在 server2 上压 CPU,让负载飙过触发器阈值

解析:验证时建议去报表 → 动作日志看动作是否触发、发送是否成功。链路是:Item 采到高负载 → Trigger 判定异常 → Action 匹配 → 按用户介质发送邮件。哪一环断了,对照 12.1~12.3 排查:介质没配通、用户没绑介质、动作没启用,是三个最高频的原因。


十三、分布式监控

再开一台代理机器192.168.40.143(server3):

根据这个选项可以查看官网的proxy安装方式:

根据这个步骤安装完可以查看10051端口是否存在,因为proxy的端口也是10051,所以一定不能跟server在同一台机器上。

  1. 修改etc下的zabbix_proxy.conf文件

proxy 只保证:zabbix_proxy.conf 里面的 Hostname 与 Web【代理】页面填写的代理名称严格一致即可。不一定必须是主机名

Server=192.168.40.141# zabbix server的ipDBPassword=password# 数据库密码javaGateway=192.168.40.142# JMX服务主机IPStartJavaPollers# 启动进程数

然后重新i启动proxy服务

systemctl restart zabbix-proxy
  1. 在server上配置代理

proxy的作用就是减轻Server的压力,是Zabbix 代理组件,介于 Zabbix Server 和被监控设备之间,承担监控数据采集中转,agent传来的数据先存入 Proxy 本地 SQLite 数据库,不直接发给 Server。所以proxy可以减少 Server 瞬时连接数、减少server端 MySQL 瞬间写入压力,多用于跨网段、分布式、异地分支机构场景。但触发器和告警计算仍然由 Server 完成,proxy 不处理告警。

  • 创建proxy 路径:管理 → proxy → 创建proxy
  • 设置agent主机使用proxy采集数据
  • 更新server配置缓存
zabbix_server-Rconfig_cache_reload#刷新server配置缓存systemctl restart zabbix_server# 重启proxy服务

zabbix_server -R config_cache_reload 刷新server配置缓存,web配置后只是写入数据库,还没有刷新到内存,不手动刷新内存,需要等待默认时间刷新。并且proxy一定要在刷新server配置缓存后启动,否则会报错。

正常重启server后,会在日志中出现:

3. 现在zabbix_agent要向proxy上报核心数据,所以修改server2上的agent配置。

  • 修改etc下的zabbix_agentd.conf文件
Server=192.168.40.143# 指向proxy主机IPServerActive=192.168.40.143

重启agent服务。
4. 代理成功

十四、grafana可视化

Grafana 是开源可视化仪表盘工具, 是 Go 写的程序,内置完整 http web 服务,默认监听 3000 端口。本身不采集数据,只做:读时序数据库 → 画图、做监控大屏、告警。

grafana官网入口

  • 安装grafana-enterprise_12.4.8_31135008312_linux_amd64.rpm版本
  • 安装完后直接启动,查看3000端口是否监听成功。
  1. 直接登录grafana:192,168.40.100:3000,默认账户名和密码都是admin

  1. grafana通过插件化来完成不同的可视化需求,安装zabbix插件。

  1. 连接我们的zabbix_server,获取监控数据
  • 测试是否连接成功

  1. 使用样例

十五、常见问题排查

症状排查思路
Web 打开 404 / 打不开检查httpd是否启动、防火墙 80 端口、/etc/httpd/conf.d/zabbix.conf是否加载
数据库初始化报ERROR 1419没设log_bin_trust_function_creators=1,重新设置后再导一次
主机显示红色 ZBX① Server→Agent 的 10050 端口不通(telnet 192.168.100.20 10050);② Agent 的Server=未配置;③ Hostname 不一致;④ SELinux/防火墙拦截
页面报 PHP 时区错误检查/etc/php-fpm.d/zabbix.confdate.timezone后重启php-fpm
取不到自定义数据zabbix_get -s <agentIP> -k <key>在 Server 端手动验证 key 是否返回
告警没发出去① 介质类型测试发送是否成功;② 用户是否绑定介质;③ 动作条件和操作是否配置正确;④ 邮件服务商是否拦截

万能排查三件套:

zabbix_get-s192.168.100.20-kagent.ping# 验证取数tail-f/var/log/zabbix/zabbix_server.log# Server 日志tail-f/var/log/zabbix/zabbix_agentd.log# Agent 日志

解析:这三个命令按顺序用,基本能解决 90% 的问题——

  1. zabbix_get告诉你数据链路通不通(返回值对不对);
  2. zabbix_server.log告诉你Server 侧发生了什么(数据库连不上、触发器计算错误都会在这里);
  3. zabbix_agentd.log告诉你Agent 侧发生了什么(Server 主动连接被拒、主动上报失败都会在这里)。

从数据流向"Server ↔ Agent"两头各看一边日志,问题就能被切得很小。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询