部署 Zabbix 企业级分布式监控

目录

一、监控系统的功能概述

二、监控系统的实现原理

三、监控系统的开源产品

[四、Zabbix 系统概述](#四、Zabbix 系统概述)

五、部署流程

2、基础环境配置:

[3、部署 Zabbix Server:](#3、部署 Zabbix Server:)

[4、Zabbix 页面配置:](#4、Zabbix 页面配置:)

[5、部署 Proxy:](#5、部署 Proxy:)

[6、部署 Agent:](#6、部署 Agent:)

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


一、监控系统的功能概述

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

监控,对应的英文单词是 Monitoring。在计算机领域,可以将其分为 5 种监控类型:应用性能监控、业务交易监控、网络性能监控、操作系统监控(文档中提及 5 种类型,但仅列出 4 种)。

按照逻辑层次划分,监控行为可分为 5 个层次:

  1. 基础设施监控:由运维人员负责,涉及网络、交换机、路由器等低层设备,需监控网络流量、丢包情况、错包情况、连接数等核心指标。
  2. 系统层监控:涵盖物理机、虚拟机、操作系统等,主要监控 CPU 使用率、内存占用率、磁盘 IO 和网络带宽等指标。
  3. 应用层监控:与服务紧密相关,包括 URL 访问性能、调用数、延迟、服务错误率、慢 SQL、缓存命中率、服务响应时间等。
  4. 业务监控:针对业务交易相关情况,如交易网站的用户登录、注册、下单、支付等,可为运营和高管提供数据支持,辅助战略决策。
  5. 端用户体验监控:监控用户端使用性能、返回码、地区分布、运营商连接情况、客户端操作系统及浏览器版本等,及时发现影响用户体验的问题。

二、监控系统的实现原理

  1. 模块组成:主要分为数据采集部分和数据存储、分析告警、展示部分。
  2. 采集协议:分为专用客户端采集(私有协议)和公用协议采集(如 SNMP、IPMI、SSH、Telnet)。
  3. 监控模式
    • 被动模式:服务器端到客户端采集数据,对监控端服务器开销较大,适合小规模监控环境。
    • 主动模式:客户端主动上报数据到服务器,对监控端服务器开销较小,适合大规模监控环境。
  4. 代理架构:对于大规模监控环境,除主动模式外,可采用代理架构(如 C/S/P 架构)分摊服务器性能开销,支持跨地域、跨网络分布式监控。

三、监控系统的开源产品

产品名称 特点及适用场景
Zabbix 企业级运维监控平台,可监控服务器、网络设备、Web 应用等,适配多种操作系统,开源免费
Prometheus+Grafana 开源监控和警报工具包,主要用于基础设施监控,可监控服务器、数据库、Web 服务等
Cacti 网络流量监测图形分析工具,连接 RRDToo1 生成网络数据图表,具有强大的数据和用户管理功能
Nagios 监控系统运行状态和网络信息,可监控本地或远程主机及服务,提供异常通知,支持多种组件监控
Checkmk 高可扩展监控工具,可整合监控服务器、网络等,有基础版(开源免费)和企业版,部署快、自动化程度高
OpenNMS 基于 Java/XML 的分布式网络和系统监控平台,支持多种系统,可通过多种协议收集系统指标
Netdata Linux 性能实时监测工具,监控指标多且广、收集速度快,支持多种运行环境,可即时诊断异常
LibreNMS 开源网络监控系统,易于安装配置,功能丰富,支持多种供应商、设备和协议,可自动发现网络

四、Zabbix 系统概述

  1. 初识 Zabbix
    • 企业级分布式开源监控系统,基于 Web 界面,可监控服务器、网络设备等的性能和可用性。
    • 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发,基于 GPL 通用公共许可证第 2 版,开源免费。
    • 支持轮询和 trapping,提供 Web 前端访问,适配不同规模组织的 IT 基础设施监控需求。
  2. Zabbix 的功能特性:包括数据收集(支持多种检测方式、自定义检测等)、灵活的阈值定义(触发器)、高级告警配置(自定义升级、宏变量等)、实时绘图、扩展图形化显示、历史数据存储、配置简单、模板使用、网络自动发现、快速 Web 接口、Zabbix API、权限系统、Agent 易扩展、二进制守护进程(高性能)、应对复杂环境(远程监控)等至。
  3. Zabbix 角色及架构
    • Zabbix Server:服务端守护进程,接收 Agent、Proxy 提交的数据或主动获取数据。
    • Zabbix Agent:客户端守护进程,收集客户端数据(如 CPU 负载、内存使用等)。
    • Zabbix Proxy:代理守护进程,作为中转站,将收集的数据提交到 Server。
    • Zabbix Web:Web 界面,用于管理配置和查看监控信息,可与 Server 同机或单独部署。

五、部署流程

1、资源清单

操作系统 配置 主机名 IP 地址 用途
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、基础环境配置:

cpp 复制代码
#关闭防火墙:执行systemctl stop firewalld和systemctl disable firewalld。
[root@localhost~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
```{insert\_element\_0\_}
#关闭 Selinux:执行setenforce 0。
[root@localhost ~]#setenforce0
```{insert\_element\_1\_}
#时间同步:设置时区为 Asia/Shanghai,执行chronyc sources -v同步时间。
[rootelocalhost ~]#timedatectl set-timezone Asia/Shanghai
[root@localhost~]#chronyc sources -v
```{insert\_element\_2\_}
#修改主机名:分别设置为 zabbix、proxy、server01、server02。
[root@localhost ~]#hostnamectl set-hostname zabbix
[root@localhost~]#hostnamectl set-hostname proxy
[root@localhost ~]#hostnamectl set-hostname server01
[root@localhost~]#hostnamectl set-hostname server02
```{insert\_element\_3\_}

3、部署 Zabbix Server:

  • 添加 Zabbix 源并清理缓存。
cpp 复制代码
[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
```{insert\_element\_4\_}
  • 安装相关软件包(如 zabbix-server-mysql、mysql-server 等)。
cpp 复制代码
[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
[root@zabbix ~]#dnf-y install https://w.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
```{insert\_element\_5\_}
  • 配置数据库:初始化数据库,创建用户并授权,设置相关参数。
cpp 复制代码
[root@zabbix ~]#systemctl enable mysqld--now
[root@zabbix ~]# mysql -uroot
(进入 MySQL 后执行的 SQL 语句):
ALTER USER 'root'@'localhost' IDENTIFED BY '123456';
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;
```{insert\_element\_6\_}
  • 导入数据:通过 zcat 命令导入 SQL 数据。
cpp 复制代码
[root@zabbix ~]#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz|mysql--default-character-set=utf8mb4 -uzabbix -p zabbix
```{insert\_element\_7\_}
  • 配置 Zabbix Server 和页面相关文件,启动服务并设置开机自启。
cpp 复制代码
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php- fpm
```{insert\_element\_8\_}

4、Zabbix 页面配置:

通过指定 URL 登录,设置语言、检查环境、配置数据库连接等,默认账号 Admin,密码 zabbix。

5、部署 Proxy:

添加源、安装软件包、导入数据、配置 Proxy 文件、启动服务,在 Web 页面添加 Proxy至。

cpp 复制代码
​#添加 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
#安装软件包
[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
#启动服务
systemctl start zabbix-proxy
systemctl enable zabbix-proxy

6、部署 Agent:

添加源、安装软件包、配置 Agent 文件(指定 Server 等信息)、启动服务,在 Web 页面添加主机(可直接添加或通过 Proxy 上报)至。

cpp 复制代码
#添加 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
#安装软件包
[root@server01 ~]#dnf-y install zabbix-agent
#启动服务
systemctl start zabbix-agent
systemctl enable zabbix-agent

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

  1. 查找 zabbix 定义字体的 php 文件(defines.inc.php)。
  2. 查看字体文件相关配置(如字体路径和字体名称)。
  3. 查找 zabbix 字体文件位置(graphfont.ttf)。
  4. 上传替换字体文件,创建软链接。
  5. 刷新页面观察效果。
cpp 复制代码
#查找 zabbix 定义字体的 php 文件
[root@zabbix ~]#find /-name defines.inc.php
#查看 zabbix 字体文件中用的字体
[root@zabbix~]#grep"ZBX_-FONTPATH"/usr/share/zabbix/include/defines.inc.php
[root@zabbix~]#grep "ZBX_GRAPH_FONTAME"/usr/share/zabbix/include/defines.inc.php
#查找 zabbix 的字体文件位置
[root@zabbix ~]#find /-name graphfont.ttf
#替换字体相关操作
[root@zabbix ~]#cd /usr/share/zabbix/assets/fonts
[root@zabbix fonts]#ln -snf msyh1.ttc graphfont.ttf
相关推荐
黄名富3 分钟前
Redisson 分布式锁
java·redis·分布式·缓存
黄雪超24 分钟前
Kafka——消费者组到底是什么?
大数据·分布式·kafka
Chasing__Dreams2 小时前
kafka--基础知识点--5.4--max.in.flight.requests.per.connection
分布式·kafka
亲爱的非洲野猪4 小时前
如何优雅解决缓存与数据库的数据一致性问题?
java·分布式·缓存·kafka·lock
YUNYINGXIA5 小时前
部署Zabbix企业级分布式监控
zabbix
码字的字节6 小时前
Hadoop数据完整性校验机制深度解析:CRC32校验和与后台扫描线程
大数据·hadoop·分布式·crc32
lifallen7 小时前
Kafka 如何优雅实现 Varint 和 ZigZag 编码
java·数据结构·分布式·算法·kafka
lifallen8 小时前
kafka 日志索引 AbstractIndex
java·数据结构·数据库·分布式·kafka
别骂我h9 小时前
部署 Zabbix 企业级分布式监控
网络·分布式·zabbix