部署Zabbix企业级分布式监控:从零到实战(知识点大全)

一、监控系统概述

1. 监控的目的与作用

  • 预防故障:通过提前发现异常避免服务中断。

  • 性能分析:了解系统瓶颈,优化资源配置。

  • 容量规划:根据历史数据预测未来资源需求。

  • 故障定位:快速定位问题根因,缩短MTTR。

2. 监控的五个层次

层次 说明
基础设施 网络设备、交换机、路由器等
系统层 CPU、内存、磁盘、网络等
应用层 URL访问、SQL性能、缓存命中率等
业务层 用户登录、下单、支付等业务指标
用户体验 客户端性能、错误率、地域分布等

⚙️ 二、Zabbix 架构与原理

1. Zabbix 核心组件

组件 功能
Zabbix Server 核心服务端,负责数据处理、告警、存储
Zabbix Proxy 代理节点,分担Server压力,适合跨地域监控
Zabbix Agent 部署在被监控端,采集数据
Zabbix Web 提供图形化界面管理
Database 支持MySQL、PostgreSQL、Oracle等

2. 工作模式

  • 被动模式:Server 主动向 Agent 请求数据,适合小规模环境。

  • 主动模式:Agent 主动上报数据到 Server,适合大规模环境。

💡 补充知识点:主动模式下,Agent 会定期向 Server 发送数据,减少Server负担,建议在大规模分布式环境中使用。

3. 数据采集协议

  • SNMP:网络设备监控

  • IPMI:硬件健康监控

  • JMX:Java 应用监控

  • Zabbix Agent:自定义监控项


三、部署环境准备(含所有代码)

资源清单

主机名 IP 角色
zabbix 192.168.10.107 Zabbix Server
proxy 192.168.10.106 Zabbix Proxy
server01 192.168.10.104 被监控节点
server02 192.168.10.105 被监控节点

基础环境配置(所有节点执行)

bash

复制代码
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 时间同步
timedatectl set-timezone Asia/Shanghai
chronyc sources -v

# 修改主机名(按角色执行)
hostnamectl set-hostname zabbix   # 在 zabbix 节点
hostnamectl set-hostname proxy    # 在 proxy 节点
hostnamectl set-hostname server01 # 在 server01 节点
hostnamectl set-hostname server02 # 在 server02 节点

四、Zabbix Server 部署(完整代码)

1. 添加 Zabbix 源

bash

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

2. 安装软件包

bash

复制代码
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server

3. 配置数据库

bash

复制代码
systemctl enable mysqld --now
mysql -uroot

sql

复制代码
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;

set global log_bin_trust_function_creators = 1;
quit;

4. 导入数据

bash

复制代码
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

sql

复制代码
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

5. 修改 Zabbix Server 配置

bash

复制代码
vim /etc/zabbix/zabbix_server.conf
# 修改以下内容
DBPassword=zabbix

6. 修改 Nginx 配置

bash

复制代码
vim /etc/nginx/conf.d/zabbix.conf
# 取消注释
listen 8080;
server_name;

7. 启动服务

bash

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

五、Zabbix Web 初始化

访问:http://192.168.10.107:8080/

  • 默认账号:Admin

  • 默认密码:zabbix

💡 补充知识点:建议首次登录后修改密码,并配置邮件告警。


六、Zabbix Proxy 部署(完整代码)

1. 安装 Proxy 软件包

bash

复制代码
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql

2. 导入 Proxy 数据

bash

复制代码
# 在 Zabbix Server 节点执行
mysql -uroot -p
set global log_bin_trust_function_creators = 1;
quit;

# 在 Proxy 节点执行
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.10.107

# 在 Server 节点执行
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

3. 配置 Zabbix Proxy

bash

复制代码
vim /etc/zabbix/zabbix_proxy.conf

ini

复制代码
Server=192.168.10.107
Hostname=Zabbix proxy
DBHost=192.168.10.107
DBPassword=zabbix

4. 启动 Proxy

bash

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

5. 在 Web 页面添加 Proxy

路径:管理 → Proxy → 创建代理 → 选择"主动式"


七、Zabbix Agent 部署(完整代码)

1. 安装 Agent

bash

复制代码
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
dnf -y install zabbix-agent

2. 配置 Agent

bash

复制代码
vim /etc/zabbix/zabbix_agentd.conf

ini

复制代码
Server=192.168.10.107
ServerActive=192.168.10.107
Hostname=server01

3. 启动 Agent

bash

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

八、添加主机(Web 界面)

路径:数据采集 → 主机 → 创建主机

  • 主机名称:与 Hostname 一致

  • 模板:选择 Linux by Zabbix agent

  • 群组:可新建或选择已有

  • 接口:IP 填写被监控节点 IP

💡 补充知识点:如果是通过 Proxy 上报,需在"由代理程序监测"中选择创建的 Proxy。


九、扩展:解决字体乱码问题

1. 查找字体定义文件

bash

复制代码
grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php

2. 替换字体

bash

复制代码
cd /usr/share/zabbix/assets/fonts
ln -snf msyh1.ttc graphfont.ttf

💡 补充知识点msyh1.ttc 是微软雅黑字体,需提前上传到服务器。软链接方式保留原文件,便于回滚。


十、补充知识点大全(不雷同)

1. Zabbix 优势 vs 其他监控系统

工具 优势 不足
Zabbix 功能全面,支持分布式 配置稍复杂
Prometheus 云原生友好,Pull模型 长期存储弱
Nagios 轻量、插件丰富 界面简陋
Cacti 图形强大 只适合网络流量

2. Zabbix 性能优化建议

  • 使用主动模式 + Proxy 分担压力

  • 数据库使用 SSD,定期清理历史数据

  • 合理设置监控项间隔(不建议每1秒采集)

3. 常见故障排查思路

  • Agent 无法连接:检查防火墙、SELinux、ServerActive 配置

  • 图形乱码:字体文件缺失

  • 数据不显示:检查 Hostname 是否一致

4. 安全建议

  • 使用 Zabbix API 进行自动化管理

  • 配置 SSL 加密 Web 访问

  • 限制 Web 登录 IP 白名单


✅ 结语

Zabbix 是企业级监控的不二之选,掌握其部署与架构设计,是运维工程师的必备技能。本文从监控理论到实操部署,涵盖了 Zabbix Server、Proxy、Agent、Web 初始化、字体修复等全流程,并提供大量补充知识点,助你写出高质量博客文章。

📌 如果你觉得本文对你有帮助,欢迎收藏、转发、点赞!

相关推荐
Peace1 小时前
【Zabbix】
linux·运维·zabbix
phltxy2 小时前
RabbitMQ 常见面试题
分布式·rabbitmq
小二·2 小时前
Redis 7 实战:缓存/消息队列/分布式锁生产级实现
redis·分布式·缓存
小程故事多_802 小时前
从初代架构到大模型时代,英伟达GPU底层架构演进与核心逻辑深度解析
java·人工智能·分布式·架构
Java 码思客3 小时前
【Redis分布式缓存实战】第3章 Redis核心机制深度解析
redis·分布式·缓存
码不停蹄的玄黓3 小时前
生产可用的 Redis 分布式锁完整实现
数据库·redis·分布式
Deep-w3 小时前
【MATLAB】微电网四DG逆变器下垂策略与分布式MPC协同控制仿真分析
开发语言·分布式·算法·matlab
周末也要写八哥3 小时前
项目简历:分布式Linux性能分析监控
分布式
AI人工智能+电脑小能手12 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试