1. Zabbix 7.0 监控系统概述
Zabbix 是一款开源的分布式监控解决方案,能够监控网络参数、服务器健康状态以及各种应用程序的性能。Zabbix 7.0 是最新稳定版本,带来了多项性能改进和新功能。
1.1 Zabbix 核心架构解析
Zabbix 采用典型的客户端-服务器架构,主要组件包括:
- Zabbix Server:核心处理引擎,负责接收监控数据、触发告警、存储数据等
- Zabbix Agent:部署在被监控主机上,负责收集本地数据
- Zabbix Proxy:可选组件,用于分布式监控场景
- Zabbix Java Gateway:用于监控Java应用程序
- 数据库:存储配置信息和监控数据
- Web界面:提供可视化操作界面
端口使用情况:
- Zabbix Server: 10051/TCP
- Zabbix Agent: 10050/TCP
- Zabbix Java Gateway: 10052/TCP
1.2 监控系统核心功能
一个完整的监控系统应具备以下功能:
- 指标采集:通过多种协议(Agent、SNMP、JMX等)收集监控数据
- 数据存储:高效存储历史数据和趋势数据
- 可视化展示:通过图表、仪表盘等形式展示监控数据
- 告警通知:在异常发生时及时通知管理员
- 自动化处理:支持自动修复常见问题
2. Zabbix 7.0 安装部署
2.1 基于Ubuntu 24.04的LAMP环境部署
2.1.1 准备工作
首先配置Zabbix官方软件源:
bash复制wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sed -i "s#repo.zabbix.com#mirrors.aliyun.com/zabbix#g" /etc/apt/sources.list.d/zabbix*
apt update
提示:使用国内镜像源可以显著提高下载速度
2.1.2 安装核心组件
安装Zabbix Server、Web前端和MySQL数据库:
bash复制apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y
apt install mysql-server -y
apt -y install language-pack-zh-hans # 支持中文界面
2.1.3 数据库配置
创建Zabbix数据库和用户:
sql复制CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
导入初始数据结构:
bash复制zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix
完成后关闭函数创建权限:
sql复制SET GLOBAL log_bin_trust_function_creators = 0;
2.1.4 Zabbix Server配置
编辑配置文件/etc/zabbix/zabbix_server.conf,设置数据库连接:
bash复制sed -i.bak '/# DBPassword/a DBPassword=123456' /etc/zabbix/zabbix_server.conf
2.1.5 启动服务
启动并设置开机自启:
bash复制systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2 mysql
2.2 基于Rocky Linux 9的Nginx环境部署
2.2.1 准备工作
配置软件源:
bash复制sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/rocky*.repo
yum makecache
yum install epel-release.noarch -y
vim /etc/yum.repos.d/epel.repo # 添加excludepkgs=zabbix*
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
sed -i.bak 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix*
yum makecache
2.2.2 安装核心组件
bash复制yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent -y
yum install -y mysql-server
yum -y install langpacks-zh_CN
2.2.3 数据库配置
sql复制CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
导入数据结构:
bash复制zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix
2.2.4 Nginx配置
修改Nginx配置文件/etc/nginx/conf.d/zabbix.conf:
nginx复制server {
listen 80;
server_name zabbix.wang.com;
# 其他配置保持不变
}
2.2.5 启动服务
bash复制systemctl enable --now zabbix-server zabbix-agent nginx php-fpm
3. Zabbix Web界面配置
3.1 初始设置
访问http://服务器IP/zabbix,按照向导完成安装:
- 检查前置条件
- 配置数据库连接
- 设置服务器名称
- 确认安装信息
- 完成安装
默认登录凭证:
- 用户名:Admin
- 密码:zabbix
3.2 解决中文显示问题
Zabbix默认字体可能导致中文显示异常,解决方法:
- 从Windows系统复制中文字体(如simkai.ttf)
- 替换Zabbix默认字体:
bash复制cd /usr/share/zabbix/assets/fonts/
mv graphfont.ttf graphfont.ttf.bak
mv /path/to/simkai.ttf ./graphfont.ttf
3.3 配置地图显示
-
进入"管理" → "常规" → "地理地图"
-
添加新地图供应商:
- 供应商:其他
- URL:
https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z} - 最大缩放级别: 18
-
设置默认位置坐标(纬度,经度格式)
4. Zabbix Agent部署与配置
4.1 标准Agent安装(Ubuntu)
bash复制wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sed -i "s#repo.zabbix.com#mirrors.aliyun.com/zabbix#g" /etc/apt/sources.list.d/zabbix*
apt update
apt install zabbix-agent -y
配置Agent:
bash复制sed -i 's#Server=127.0.0.1#Server=ZABBIX_SERVER_IP#' /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent.service
4.2 Agent2安装与配置
Agent2是新一代的Zabbix Agent,采用多线程架构:
bash复制apt install zabbix-agent2 -y
sed -i 's#Server=127.0.0.1#Server=ZABBIX_SERVER_IP#' /etc/zabbix/zabbix_agent2.conf
systemctl restart zabbix-agent2.service
查看Agent2进程:
bash复制pstree -p | grep zabbix
4.3 Windows Agent安装
- 从Zabbix官网下载Windows版本的Agent
- 运行安装程序,在配置步骤指定Zabbix Server地址
- 安装完成后,服务会自动启动
验证安装:
bash复制zabbix_get -s WINDOWS_HOST_IP -p 10050 -k "system.hostname"
5. 监控配置实战
5.1 主机与模板管理
5.1.1 添加主机
- 进入"配置" → "主机" → "创建主机"
- 填写主机名称和可见名称
- 添加Agent接口(IP和端口10050)
- 选择适当的模板(如Linux by Zabbix agent)
5.1.2 模板调整
生产环境中建议调整监控项间隔:
- 进入模板的"监控项"页面
- 全选所有监控项
- 点击"批量更新"
- 修改"更新间隔"为2-3分钟
5.2 Nginx监控配置
5.2.1 启用Nginx状态页
编辑Nginx配置文件:
nginx复制location = /basic_status {
stub_status;
}
验证配置:
bash复制nginx -t
nginx -s reload
访问http://服务器IP/basic_status查看状态页
5.2.2 Zabbix配置
- 为主机添加"Template App Nginx by HTTP"模板
- 配置宏:
- {$NGINX.STUB_STATUS.PATH} = /basic_status
- {$NGINX.PORT} = 80
5.3 Java应用监控(Tomcat)
5.3.1 启用JMX
编辑Tomcat启动脚本catalina.sh:
bash复制CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=TOMCAT_HOST_IP"
5.3.2 部署Java Gateway
在Zabbix Server主机上:
bash复制apt install zabbix-java-gateway -y
配置Zabbix Server:
ini复制JavaGateway=JAVA_GATEWAY_IP
StartJavaPollers=20
5.3.3 配置监控
- 为主机添加JMX接口(端口12345)
- 添加"Template App Apache Tomcat by JMX"模板
5.4 SNMP设备监控
5.4.1 配置SNMP Agent
编辑/etc/snmp/snmpd.conf:
ini复制agentaddress SNMP_HOST_IP,127.0.0.1
view systemonly included .1
重启服务:
bash复制systemctl restart snmpd
5.4.2 测试SNMP
从Zabbix Server测试:
bash复制snmpwalk -v 2c -c public SNMP_HOST_IP 1.3.6.1.2.1.1.1
5.4.3 Zabbix配置
- 创建新主机
- 添加SNMP接口
- 添加"Template OS Linux by SNMP"模板
6. 告警与通知配置
6.1 邮件告警配置
6.1.1 方法一:使用Zabbix内置邮件功能
- 进入"管理" → "报警媒介类型"
- 配置Email媒介类型
- 设置SMTP服务器参数
6.1.2 方法二:使用脚本
- 安装邮件客户端:
bash复制apt install mailutils -y
- 创建报警脚本
/usr/lib/zabbix/alertscripts/mail.sh:
bash复制#!/bin/bash
echo "$3" | mail -s "$2" "$1"
- 配置报警媒介类型使用该脚本
6.2 企业微信告警
- 在企业微信创建应用,获取AgentID和Secret
- 创建报警脚本:
bash复制#!/bin/bash
curl -s "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=TOKEN" \
-H "Content-Type: application/json" \
-d "{\"touser\":\"$1\",\"msgtype\":\"text\",\"agentid\":AGENT_ID,\"text\":{\"content\":\"$2\"},\"safe\":0}"
- 配置报警媒介类型
6.3 分级告警配置
- 创建不同严重级别的触发器
- 为不同级别的触发器配置不同的通知方式
- 设置告警升级规则
7. 高级功能配置
7.1 故障自愈
- 在Agent配置中启用远程命令:
ini复制EnableRemoteCommands=1
- 创建修复脚本
- 配置动作执行远程命令
7.2 主动模式与被动模式
7.2.1 Agent主动模式配置
编辑Agent配置文件:
ini复制ServerActive=ZABBIX_SERVER_IP
Hostname=UNIQUE_HOSTNAME
StartAgents=0
7.2.2 Web端配置
- 修改主机接口类型为"Zabbix Agent(主动式)"
- 调整监控项类型为主动式
7.3 Zabbix Proxy部署
7.3.1 安装Proxy
bash复制apt install zabbix-proxy-mysql -y
7.3.2 配置数据库
sql复制CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix_proxy'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_proxy'@'localhost';
7.3.3 Proxy配置
编辑/etc/zabbix/zabbix_proxy.conf:
ini复制Server=ZABBIX_SERVER_IP
Hostname=PROXY_UNIQUE_NAME
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=password
8. 自动化运维
8.1 自动注册
- 配置Agent:
ini复制Hostname=UNIQUE_NAME
HostMetadata=linux
- Web端配置自动注册动作
8.2 网络发现
- 配置发现规则(IP范围、检查类型)
- 配置发现动作
8.3 API集成
Zabbix提供完整的API支持,可用于:
- 批量管理主机
- 自动化配置
- 与其他系统集成
示例API调用:
bash复制curl -L -k -X POST -H 'Content-Type: application/json-rpc' -d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' 'http://ZABBIX_SERVER_IP/zabbix/api_jsonrpc.php'
9. 性能优化与维护
9.1 数据库优化
- 定期清理历史数据:
sql复制DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
- 配置分区表
- 调整数据库缓存参数
9.2 Zabbix Server调优
编辑/etc/zabbix/zabbix_server.conf:
ini复制StartPollers=100
StartPollersUnreachable=50
StartTrappers=20
StartPingers=50
CacheSize=512M
HistoryCacheSize=256M
9.3 监控项优化
- 合理设置监控项间隔
- 使用主动式检查减轻Server负载
- 对高频监控项使用Zabbix Proxy
10. 常见问题排查
10.1 Agent无法连接
检查步骤:
- 验证网络连通性
- 检查防火墙规则
- 确认Agent配置中的Server地址正确
- 检查Zabbix Server日志
10.2 监控数据不更新
可能原因:
- Agent未运行
- 监控项配置错误
- 数据库空间不足
- Server负载过高
10.3 告警未触发
检查:
- 触发器表达式是否正确
- 告警条件是否满足
- 动作配置是否正确
- 报警媒介是否启用
11. 实际应用案例
11.1 企业级监控架构设计
典型的三层架构:
- 核心层:Zabbix Server + 数据库集群
- 分布层:多个Zabbix Proxy
- 接入层:各种类型的Agent
11.2 混合云监控方案
- 公有云实例:通过Proxy集中上报
- 本地数据中心:直接连接Server
- 边缘设备:使用主动式Agent
11.3 大型网络设备监控
- 使用SNMPv3提高安全性
- 配置网络设备模板
- 设置流量阈值告警
- 实现网络拓扑自动发现
12. 最佳实践与经验分享
12.1 监控策略设计
- 分层监控:基础设施 → 服务 → 应用 → 业务
- 关键指标优先:CPU、内存、磁盘、网络、服务状态
- 合理设置告警阈值:避免告警风暴
12.2 模板管理技巧
- 创建层次化模板结构
- 使用模板宏提高灵活性
- 定期审核和更新模板
- 建立模板版本控制机制
12.3 仪表盘设计
- 按业务系统组织仪表盘
- 使用聚合图形展示关键指标
- 为不同角色定制视图
- 合理使用地图和拓扑图
13. 未来发展与扩展
13.1 与DevOps工具集成
- 与Prometheus互补使用
- 集成到CI/CD流水线
- 与自动化运维平台对接
13.2 机器学习应用
- 异常检测
- 预测性告警
- 根因分析
13.3 云原生支持
- 容器监控方案
- Kubernetes集成
- 服务网格监控
在实际生产环境中部署Zabbix时,建议从小规模开始,逐步扩展。监控系统的价值在于持续运营,需要定期回顾和优化监控策略。对于关键业务系统,应考虑部署高可用架构,确保监控系统本身的可靠性。