部署Zabbix企业级分布式监控

一,监控系统的功能概述

监控、从中文的字义来看,有两个内容,一是检测,二是控制。重点在第一个字眼,即测、预防的意思。

监控,对应的英文单词是 Monitoring。在计算机领域,可以将其分为5种监控类型。应用性能监控

业务交易监控

网络性篪监控

操怍异妎缜噥璀圪蠱曦燉兵迩铐鷂朏鍬秱朦途套铹淶惕õ弗苟û帟耥釙琳控

上面5种类型将监控这个概念划分成了多个领域。我们通常所说的监控,都会模糊的包含以上5个细分的领域。在任何一个 IT业务环境中,都会存在各种各样的硬件设备、软件应用等。

按照逻辑层次划分,我们可以将我们可以将监控行为划分为5个层次:基础设施监控、系统层监控、应用层监控、业务监控、端用户体验监控

最底层基础设施监控:这层一般由运维人员负责,涉及到的方而比较接近硬件体系,例如网络,交换机,路由器等低层设备,这些设备的可靠性稳定性就直接影响到上层服务应用的稳定性,所以需要对网络

的流量,丢包情况、错包情况,连接数等等这些基础设施的核心指标进行监控。系统层监控:这层涵盖了物理机、虚拟机、操作系统等,这些都是属于系统级别监控的方面,主要对几个核心指标进行监控,如 cpu 使用率、内存占用率,磁盘 I0 和网络带宽情况。应用层监控:这层涉及到方面和服务紧密相关,例如对 ur1 访问的性能,访问的调用数,访问的延迟,还有对服务提供性能进行监控,服务的错误率等,同时对 sq1 也需要进行监控,查看是否有慢 sq1。对于cache 来说,需要监控缓存的命中率和性能,每个服务的响应时间等等。业务监控;业务监控具体指什么?举个例子,比如说一个典型的交易网站,需要关注它的用户登录情况、注册情况、下单情况、支付情况等等,这些直接影响到实际触发的业务交易情况,这层监控可以提供给运营和公司高管们,提供他们需要关注的数据,直接以数据支撑公司在战略层面的决策和方向。

端用户体验监控:一个应用程序可能通过 app、h5、pc 端的方式交付到用户的手上,用户通过浏览器,客户端打开连到我们的服务,那么在用户端,用户的体验是怎么样?用户端的性能是怎么样?以及有没有产生错误等等.这些信息都需要进行监控并记录下来,如果没有监控,有可能因为某些 BUG 或者性能问题,造成用户体验非常差,而我们并没有感知。其中包括监控用户端的使用性能、返回码,在哪些城市地区他们的使用情况是怎么样,还有运营商的情况,包括三大运营商不同用户的连接情况。我们需要进一步知道,是否有哪些渠道哪些用户接入的时候存在着问题,我们还需要知道客户端使用的操作系统浏览器的版黄

二,监控系统的实现原理

1,模块组成

一个监控系统的组成大体可以分为两部分:数据采集部分和数据存储、分析告警、展示部分,这两部分构成了监控系统的基本模型。

2,采集协议

按照支持的协议方式,监控IT数据采集可以分为两种;专用客户采集和公用协议采集。

3,监控模式

监控系统数据朵集的工作模式可以分为被动模式和主动模式。被动模式指的是服务器端到客户端采集数据;主动模式是客户端主动上报数据到服务器。一般来说被动模式对监控端服务器的开销较大,适合小规模的监控环境:被动模式对监控服务器的开销较小,适合大规模的监控环境。

4,代理架构

对于大规模的监控环境,被监控节点比较多,并且监控类型也很多,监控产生的数据和网络连接开销非常大,数采集方式除了使用主动模式之外,还需要使用代理的架构,通过代理架构分摊服务器端的性能开销。另外,代理架构还支持跨地域、跨网络的分布式监控。常见的代理架构为C/S/P 架构,即 Client/Proxy/server

二:监控系统的实现原理

1:模块组成

一个监控系统的组成大体可以分为两部分:数据采集部分和数据存储、分析告警、展示部分,这两部分构成了监控系统的基本模型。

2:采集协议

按照支持的协议方式,监控 IT 数据采集可以分为两种:专用客户端采集和公用协议采集。

3:监控模式

监控系统数据采集的工作模式可以分为被动模式和主动模式。被动模式指的是服务器端到客户端采集数据;主动模式是客户端主动上报数据到服务器。

一般来说被动模式对监控端服务器的开销较大,适合小规模的监控环境;被动模式对监控端服务器的开销较小,适合大规模的监控环境

4:代理架构

对于大规模的监控环境,被监控节点比较多,并且监控类型也很多,监控产生的数据和网络连接开销非常大,数据采集方式除了使用主动模式之外,还需要使用代理的架构,通过代理架构分摊服务器端的性能开销。另外,代理架构还支持跨地域、跨网络的分布式监控。常见的代理架构为 C/S/P 架构,即 Client/Proxy/Server。

三:监控系统的开源产品

1:zabbix

Zabbix 是一款出色的企业级运维监控平台,可用于监控从服务器、网络设备到 Web 应用程序和数据库的性能和可用性的一切;它可以安装在 Linux、AIX、Windows、Solaris、MacOS X、FreeBSD、OpenBSD 等系统上使用,具有非常良好的适配能力

2:Prometheus+Grafana

Prometheus 是一个开源系统监控和警报工具包,主要用于对基础设施的监控,包括服务器 (CPU、MEM 等)、数据库 (MySQL、PostgreSQL 等)、Web 服务等,几乎所有东西都可以通过 Prometheus 进行监控。

3:Cacti

Cacti 是一款网络流量监测图形分析工具,它连接到 RRDTool,生成与网络数据相关的图表,具有非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host 以及任何一张图,还可以与 LDAP 结合进行用户验证,同时也能自己增加模板。

4:Nagios

Nagios 是一个监控系统运行状态和网络信息的监控系统,它可以监控所指定的本地或远程主机以及服务,同时提供异常通知功能等;能够监控几乎所有类型的组件,如网络协议、操作系统、系统指标、应用程序、服务、Web 服务器、网站、中间件等。

5:Checkmk

Checkmk 是一个高度可扩展的监控工具,可监控服务器、网络、云资产、数据库、容器、物联网等。

它有两种模式可用,基础版完全开源并提供免费和无限制的监控,企业版附带附加功能。

Checkmk 具有部署快、高度自动化、配置灵活的特点。

6:OpenNMS

OpenNMS 是一个企业级基于 Java/XML 的分布式网络和系统监控管理平台。它能够显示网络中各中终端和服务器的状态和配置,为管理网络提供有效的信息。它专为 Linux 设计,但也支持 Windows、Solaris 和 OSX。

OpenNMS 可以使用 JMX、WMI、SNMP、NRPE、XML HTTP、JDBC、XML、JSON 等收集系统指标。

7:Netdata

Netdata 是一款 Linux 性能实时监测工具,它可以为 Linux 系统、应用程序、SNMP 服务等提供实时的性能监测,目前在物理系统、虚拟机、容器和物联网 / 边缘设备上运行。Netdata 具有监控指标多而广,数据收集速度快等特点,可以同时并发监控数万个指标,交互式可视化和富有洞察力的健康警报,可以即时诊断基础架构中的异常情况。

8:LibreNMS

LibreNMS 是一个开源、功能丰富且强大的网络监控系统,易于安装和配置,可以在多种平台上使用;它提供了广泛的功能,包括对各种协议的支持、性能监控、警报等;支持广泛的供应商、设备和协议,包括 Cisco、Linux、Windows、HP、Juniper、Dell、FreeBSD、Brocade、Citrix、F5 Networks 等;还可以根据接口进行接口分组,使用 SNMP、CDP、ARP、FDP、OSPF、LLDP、BGP 自动发现整个网络。

四: Zabbix 系统概述

1:初识 Zabbix

Zabbix 是什么,它是一种企业级的分布式开源监控系统的解决方案,Zabbix 是一个基于 Web 界面的提供分布式系统监控,以及网络监控功能的企业级开源解决方案。

Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。

Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用。

Zabbix 是免费的。Zabbix 是在 GPL 通用公共许可证第 2 版下编写和分发的。这意味着它的源代码是免费分发的,可供公众使用。

2:Zabbix 的功能特性

(1)数据收集

可用性及性能检测;

支持 SNMP (trapping 及 polling)、IPMI、JMX 监控;

自定义检测;

自定义间隔收集数据;

三种角色:Server、Proxy、Agent。

(2)灵活的阈值定义

允许灵活地自定义问题阈值,在 Zabbix 中称为触发器 (trigger),存储在后端数据库中。

(3)高级告警配置

可以自定义告警升级 (escalation)、接收者及告警方式;

告警信息可以配置,并允许使用宏 (macro) 变量;

通过远程命令实行自动化动作 (action)。

(4)实时绘图

通过内置的绘图方法实现监控数据实时绘图。

(5)扩展的图形化显示

允许自定义创建多监控视图;

生成网络拓扑 (network maps);

自定义的面板 (screen) 和 slide shows,并允许在 dashboard 页面显示;

生成监控报告。

(6)历史数据存储

数据存储在数据库中;

历史数据可配置;

内置数据清理机制。

(7)配置简单

一次配置,终生监控,除非调整或删除;

允许使用模板添加监控设备。

(8)模板使用

模板中可以添加组监控;

模板允许继承。

(8)网络自动发现

自动发现网络设备;

Agent 自动注册;

自动发现文件系统、网卡设备、SNMP OID 等。

(9)快速的 web 接口

web 前端采用 PHP 编写;

访问无障碍。

(10)Zabbix API

Zabbix API 提供程序级别别的访问接口,第三方程序可以很快接入。

(11)权限系统

安全的权限认证;

用户可以限制允许维护的列表。

(12)全特性、Agent 易扩展

在监控目标上部署;

支持 Linux 及 Windows。

(13)二进制守护进程

(1) C 语言开发,高性能,低内存消耗;

(2) 易移植。

(14)具备应对复杂环境情况

通过 Zabbix Proxy 可以非常容易的创建远程监控。

3:Zabbix 角色及架构

(1)Zabbix Server

zabbix_server 是 Zabbix 服务器守护进程。Zabbix Agent、Zabbix Proxy 的数据最终都是提交到 Server。当然,并不是所有数据都主动提交给 Zabbix Server,也有的是 Server 主动获取数据。

(2)Zabbix Agent

zabbix_agentd 是客户端守护进程,此进程主要用于收集客户端数据,例如 CPU 负载、内存、硬盘使用情况等。

(3)Zabbix Proxy

zabbix_proxy 是 Zabbix 代理守护进程,功能类似 Server。不同的是,zabbix_proxy 只是一个中转站,它需要把收集到的数据提交 / 被提交到 Server。

(4)Zabbix Web

zabbix 的 web 界面,管理员通过 web 界面管理 zabbix 配置以及查看 zabbix 相关监控信息,通常与 zabbix_server 运行在同一台主机上,也可以单独部署在独立的服务器上。

(5)Zabbix 整体架构

五、部署流程

1:资源清单

|-----------------|------|----------|-----------------|--------------|
| openEuler 24.03 | 2C4G | zabbix | 192.168.207.137 | Zabbix 服务端 |
| openEuler 24.03 | 2C4G | proxy | 192.168.207.138 | Zabbix proxy |
| openEuler 24.03 | 2C4G | server01 | 192.168.207.139 | 被监控节点 |
| openEuler 24.03 | 2C4G | server02 | 192.168.207.140 | 被监控节点 |

2:基础环境

(1)关闭防火强

复制代码
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

作用:停止并禁用 firewalld 防火墙服务,避免其影响后续服务通信 。

(2)关闭 SELinux

复制代码
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

作用:setenforce 0 临时将 SELinux 设为宽容模式;sed 命令修改配置文件,永久关闭 SELinux ,防止其对软件安装、运行产生权限干扰 。

(3)时间同步

复制代码
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost ~]# chronyc sources -v

作用:timedatectl 命令设置系统时区为亚洲 / 上海;chronyc sources -v 用于查看 chrony 时间同步源状态,确保时间同步 。

(4)修改主机名

复制代码
[root@localhost ~]# hostnamectl set-hostname zabbix
[root@localhost ~]# hostnamectl set-hostname proxy
[root@localhost ~]# hostnamectl set-hostname server01
[root@localhost ~]# hostnamectl set-hostname server02

作用:分别将主机名设置为 zabbixproxyserver01server02 ,方便识别不同角色的主机 。

部署 Zabbix Server

(1)添加 Zabbix 源

复制代码
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]# dnf clean all

作用:rpm 命令安装 Zabbix 官方软件源(适配 RHEL 9 等系统,Zabbix 6.4 版本 );dnf clean all 清理本地软件源缓存,使新添加的源生效 。

(2)安装软件包

Zabbix 及依赖包安装

bash

复制代码
[root@zabbix ~]# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
[root@zabbix ~]# dnf -y install mysql-server-8.0.41 mysql

作用:

第一条命令安装 Zabbix 服务端(关联 MySQL )、Web 端(关联 MySQL )、Nginx 配置、SQL 脚本、SELinux 策略、Agent 等组件;

第二条命令安装 MySQL 服务器(8.0.41 版本 )和 MySQL 客户端 。

安装特定依赖包(net - snmp - libs)
复制代码
[root@zabbix ~]# dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm

作用:通过指定 RPM 包链接,安装 net-snmp-libs 依赖包,解决可能的依赖缺失问题 。

备注信息

复制代码
zabbix6.4.8 需要的各个平台软件的版本如下:
mysql 的版本要求8.0.30 - 8.1.X
mariadb 的版本要求10.5.00 - 11.1.X
nginx 的版本要求1.20 or later
php 的版本要求7.4.0 - 8.2.X

说明 Zabbix 6.4.8 对 mysqlmariadbnginxphp 等软件的版本适配要求,用于指导环境搭建时软件版本选择 。

(3)配置数据库(后续步骤,此处仅提取标题 )

系统服务与数据库操作代码

复制代码
# 设置 mysql 服务开机自启并立即启动
systemctl enable mysqld --now  

# 使用 root 用户登录 MySQL 数据库(无密码或已配置免密场景,若有密码需补充 -p 后输入)
mysql -uroot  

MySQL 交互环境内的 SQL 语句

复制代码
-- 修改 root@localhost 用户的密码为 '123456'
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';  

这些代码用于初始化 MySQL 服务(设置自启、启动)、登录数据库,以及修改 root 用户密码,是数据库基础配置环节常用操作 。

复制代码
FLUSH PRIVILEGES;

create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;

create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
create user zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
grant all privileges on zabbix_proxy.* to zabbix@'%';

set global log_bin_trust_function_creators = 1;

quit;

各语句功能说明

  • FLUSH PRIVILEGES; :刷新权限,让 MySQL 重新加载权限表,使后续权限相关操作及时生效。
  • create database zabbix character set utf8mb4 collate utf8mb4_bin; :创建名为 zabbix 的数据库,指定字符集为 utf8mb4 ,排序规则为区分大小写的 utf8mb4_bin ,适配 Zabbix 存储数据需求 。
  • create user zabbix@localhost identified by 'zabbix'; :创建本地用户 zabbix(仅能从数据库所在机器登录 ),密码为 zabbix
  • grant all privileges on zabbix.* to zabbix@localhost; :赋予 zabbix@localhost 用户对 zabbix 数据库所有表的全部操作权限 。
  • create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin; :创建 zabbix_proxy 数据库,用于 Zabbix 代理相关数据存储,字符集和排序规则同 zabbix 数据库 。
  • create user zabbix@'%' identified by 'zabbix'; :创建允许从任意主机(% 通配 ,需注意安全风险 )登录的 zabbix 用户,密码 zabbix
  • grant all privileges on zabbix_proxy.* to zabbix@localhost;grant all privileges on zabbix_proxy.* to zabbix@'%'; :分别赋予对应用户对 zabbix_proxy 数据库所有表的全部权限 。
  • set global log_bin_trust_function_creators = 1; :设置全局变量,允许创建存储函数(Zabbix 初始化可能用到,避免因二进制日志相关限制导致创建失败 )。
  • quit; :退出 MySQL 命令行客户端 。

(4)导入数据

复制代码
[root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
[root@zabbix ~]# # mysql -uroot -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
说明
  • 第一条命令:通过 zcat 解压并读取 server.sql.gz 脚本内容,借助管道 | 传递给 mysql 命令,使用 zabbix 用户(密码需交互输入或提前配置免密 )、指定字符集 utf8mb4 ,向 zabbix 数据库导入表结构等初始化数据 。
  • 后续命令:以 root 用户(注释形式,实际执行需去掉 # 并输入密码 )登录 MySQL ,设置全局变量 log_bin_trust_function_creators0(调整之前开启的函数创建权限,完成初始化后重置 ),然后退出 MySQL 。

(5)配置 zabbix server

操作说明

修改 /etc/zabbix/zabbix_server.conf 文件,大约在 129 行左右,取消注释并修改密码:

复制代码
DBPassword=zabbix

作用

配置 Zabbix Server 连接数据库的密码,让 Zabbix Server 能正确访问 zabbix 数据库 。

(6)配置 zabbix 页面

操作说明
复制代码
listen 8080;
server_name _;

修改 /etc/nginx/conf.d/zabbix.conf 文件,注意取消注释相关配置:

作用

配置 Nginx 监听端口(8080 )和服务器名称,使 Nginx 能正确代理、托管 Zabbix 的 Web 页面 。

(7)启动服务

bash

复制代码
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm

作用:

第一条命令重启 zabbix-server(Zabbix 服务端 )、zabbix-agent(Zabbix 代理 )、nginx(Web 服务器 )、php-fpm(PHP 进程管理器 )服务,使配置生效;

第二条命令设置这些服务开机自启,确保系统重启后自动运行 。

4:zabbix 页面配置

(1)登录 zabbix

复制代码
http://192.168.207.137:8080/

说明:通过浏览器访问该 URL ,进入 Zabbix 登录页面(需替换为实际部署 Zabbix 服务端的主机 IP ,端口 8080 需与 Nginx 配置一致 ) 。

(2)设置语言

(3)检查环境

(4)配置数据库连接

(5)主机名设置

保持默认即可

(6)安装前汇总

(7)完成安装

(8)登录

默认账号:Admin

默认密码:zabbix

5:部署proxy

(1)添加 zabbix 源

复制代码
[root@proxy ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]# dnf clean all

作用:

proxy 主机上,通过 rpm 命令安装 Zabbix 官方软件源(适配 RHEL 9 系统,Zabbix 6.4 版本 );在 zabbix 主机上,执行 dnf clean all 清理本地软件源缓存,使新添加的源生效 。

(2)安装软件包

复制代码
[root@proxy ~]# dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
[root@proxy ~]# dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm

作用:

第一条命令在 proxy 主机上安装 Zabbix Proxy(关联 MySQL )、SQL 脚本、SELinux 策略、MySQL 客户端等组件;

第二条命令通过指定 RPM 包链接,安装 net-snmp-libs 依赖包,解决可能的依赖缺失问题 。

(3)导入数据

① zabbix server 节点执行(1)
复制代码
[root@zabbix ~]# # mysql -uroot -p
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

说明:

以 root 用户(注释形式,实际执行需去掉 # 并输入密码 )登录 MySQL ,设置全局变量 log_bin_trust_function_creators1(允许创建存储函数,适配 Zabbix 数据导入需求 ),然后退出 MySQL 。

② proxy 节点执行
复制代码
[root@proxy ~]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137

说明:

通过 cat 命令读取 proxy.sql 脚本内容,借助管道 | 传递给 mysql 命令,使用 zabbix 用户(密码需交互输入 )、指定字符集 utf8mb4 ,连接到 zabbix server(IP 为 192.168.207.137 )的 zabbix_proxy 数据库,导入 Proxy 相关表结构等初始化数据 。

③ zabbix server 节点执行(2)
复制代码
[root@zabbix ~]# mysql -uroot -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

说明:

以 root 用户登录 MySQL ,设置全局变量 log_bin_trust_function_creators0(完成数据导入后,重置函数创建权限 ),然后退出 MySQL 。

(4)配置zabbix proxy

修改 Zabbix Proxy 配置文件(/etc/zabbix/zabbix_proxy.conf

配置说明与关键内容
复制代码
# 大约 32 行左右,修改为 zabbix server 节点的 IP
Server=192.168.207.137

# 大约 42 行左右,可以修改,这里不做修改,后续 web 页面添加时名字要和这里保持一致
Hostname=Zabbix proxy

# 大约 157 行左右,取消注释修改为 zabbix server 节点的 IP
DBHost=192.168.207.137

# 大约 194 行左右,取消注释为数据库的密码
DBPassword=zabbix

作用:

  • Server:指定 Zabbix Server 的 IP ,让 Proxy 能与 Server 通信;
  • Hostname:设置 Proxy 的主机名,后续 Web 页面添加 Proxy 时需保持一致;
  • DBHost:指定 Zabbix Server 数据库所在主机 IP(因 Proxy 数据需与 Server 数据库交互 );
  • DBPassword:配置连接数据库的密码,确保 Proxy 可访问数据库 。

(5)启动服务

复制代码
systemctl start zabbix-proxy
systemctl enable zabbix-proxy

作用:

第一条命令启动 zabbix-proxy 服务,使配置生效;

第二条命令设置 zabbix-proxy 服务开机自启,保证系统重启后自动运行 。

(6)web 页面添加 proxy

操作步骤
复制代码
管理-->Proxy>创建 agent 代理
选择主动式(默认)

说明:

在 Zabbix Web 界面,按路径进入 Proxy 管理模块,创建新的 Agent 代理,采用默认的主动式模式(Proxy 主动向 Server 汇报数据 ),并填写与 zabbix_proxy.confHostname 一致的名称等信息完成添加 。

6:部署 Agent

(1)添加 zabbix 源

复制代码
[root@server01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@server01 ~]# dnf clean all

作用:

server01 主机上,通过 rpm 命令安装 Zabbix 官方软件源(适配 RHEL 9 系统,Zabbix 6.4 版本 );执行 dnf clean all 清理本地软件源缓存,使新添加的源生效 。

(2)安装软件包

复制代码
[root@server01 ~]# dnf -y install zabbix-agent

作用:在 server01 主机上,通过 dnf 命令安装 zabbix-agent 软件包,用于采集主机监控数据 。

(3)配置 agent

操作说明与关键配置(修改 /etc/zabbix/zabbix_agentd.conf 文件 )
复制代码
# 大约 117 行,上报给 server 就写 server 节点的 IP,上报给 proxy 就写 proxy 的 IP
Server=192.168.207.137

# 大约 171 行,上报给 server 就写 server 节点的 IP,上报给 proxy 就写 proxy 的 IP,一般和 Server 这行配置写的一样
ServerActive=192.168.207.137

# 大约 182 行,Agent 本地的名称,需要与将来在 Server 端的 Web 页面上的主机名称一致,名称自定义
Hostname=server01

作用:

  • Server:指定 Agent 向哪个 Zabbix Server 或 Proxy 被动上报数据(这里配置为 Zabbix Server 的 IP 192.168.207.137 );
  • ServerActive:指定 Agent 向哪个 Zabbix Server 或 Proxy 主动上报数据(与 Server 配置一致,主动模式 IP );
  • Hostname:设置 Agent 本地主机名,需与 Zabbix Server 端 Web 界面添加主机时的名称一致,用于识别和关联监控数据 。

(4)启动服务

复制代码
systemctl start zabbix-agent
systemctl enable zabbix-agent

作用:

第一条命令启动 zabbix-agent 服务,使 Agent 开始采集、上报监控数据;

第二条命令设置 zabbix-agent 服务开机自启,确保系统重启后自动运行 。

(5)添加主机

操作步骤
复制代码
数据采集-->主机-->创建主机

说明:

在 Zabbix Server 端的 Web 界面,按路径进入主机管理模块,通过 "创建主机" 功能,添加部署了 Agent 的 server01 等主机,配置相关监控项、关联模板等,实现对主机的监控 。

直接添加主机

主机名称:和 Agent 服务配置文件中的 Hostname 保持一致

模板:有很多自带的模板,也可以自己创建

主机群组:可以选择已有的,也可以自己创建一个群组

接口:添加 Agent 节点,IP 地址填写被监控节点的 IP

通过 proxy 上报

整体和直接添加主机类似,只是多了个 由 Proxy 代理程序监测 选择之前创建的 proxy 即可

扩展:解决图像字体显示问题

1:查找 zabbix 定义字体的 php 文件

复制代码
[root@zabbix ~]# find / -name defines.inc.php

结果:

复制代码
/usr/share/zabbix/include/defines.inc.php

2:查看 zabbix 字体文件中用的字体

复制代码
[root@zabbix ~]# grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
[root@zabbix ~]# grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php

对应输出内容:

复制代码
define('ZBX_FONTPATH', realpath('assets/fonts')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name

3:查找 zabbix 的字体文件位置

复制代码
[root@zabbix ~]# find / -name graphfont.ttf

结果:

复制代码
/usr/share/zabbix/assets/fonts/graphfont.ttf

4:替换字体

操作说明与代码
  1. 上传 msyhl.ttc 文件到 /usr/share/zabbix/assets/fonts 目录

  2. 执行以下命令:

    [root@zabbix ~]# cd /usr/share/zabbix/assets/fonts
    [root@zabbix fonts]# ls
    graphfont.ttf msyhl.ttc
    [root@zabbix fonts]# ln -snf msyhl.ttc graphfont.ttf

备注

复制代码
-s --symbolic 比较容易,有 -s 时表示创建软连接,没有 -s 时,表示创建硬链接  
-f --force 强行删除任何已存在的目标文件  
-n --no-dereference 把符号连接的目的目录视为一般文件  

最后步骤

复制代码
刷新页面观察效果
相关推荐
不做菜鸟的网工4 天前
Zabbix收集H3C交换机实时配置命令 「SNMP TRAP」
zabbix
初次攀爬者4 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
肖祥5 天前
docker安装zabbix7.4
zabbix
shen121386 天前
【zabbix】自动发现监控项原型计算
zabbix
断手当码农6 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者6 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
业精于勤_荒于稀6 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式
Asher05096 天前
Hadoop核心技术与实战指南
大数据·hadoop·分布式
凉凉的知识库6 天前
Go中的零值与空值,你搞懂了么?
分布式·面试·go
?Anita Zhang6 天前
联邦学习实战:如何在分布式场景下构建隐私保护机器学习模型
人工智能·分布式·机器学习