
Zabbix 部署与配置手册当前支持版本版本Zabbix 7.4Zabbix 7.2Zabbix 7.0 LTSZabbix 6.0 LTS发布日期2025年7月1日2024年12月10日2024年6月4日2022年2月8日全面支持截止时间2026年1月1日2025年6月30日2027年6月30日2025年2月28日有限支持截止时间Q3 20262025年12月31日2029年6月30日2027年2月28日Zabbix 概述Zabbix 由 Alexei Vladishev 创建目前由 Zabbix SIA 积极开发和维护。Zabbix 是一款企业级开源分布式监控解决方案。Zabbix 用于监控网络众多参数、服务器/虚拟机/应用程序/服务/数据库/网站/云平台等的健康状态和完整性。提供灵活的告警机制允许用户为几乎任何事件配置基于邮件的告警实现对服务器问题的快速响应。基于存储数据提供出色的报表和数据可视化功能适用于容量规划。Zabbix 同时支持轮询polling和捕获trapping两种方式。所有报表、统计信息及配置参数均可通过基于 Web 的前端界面访问可从任何位置评估网络状态和服务器健康状况。Zabbix 完全免费基于 GNU 通用公共许可证第2版发布。Zabbix 核心组件1. Zabbix Server核心整个系统的大脑负责数据接收、处理、存储、告警判断、任务调度。功能接收 Agent/Proxy/SNMP 数据、触发告警、管理配置、提供 Web 后端。部署生产环境建议独立服务器支持 HA 高可用。2. Zabbix Agent / Agent2被监控端部署在被监控主机采集本地数据系统、应用并上报。AgentC 语言开发轻量、单线程适合基础监控。Agent26.0 推荐Go 语言多线程、插件化MySQL/Redis/K8s性能更强。模式主动Agent → Server、被动Server → Agent。3. Zabbix Proxy可选分布式代理 Server 采集数据减轻 Server 负载适用于跨地域/跨网络监控、网络隔离。不存储数据仅转发适合大规模、多机房场景。4. 数据库Database存储配置主机、模板、触发器、历史数据、趋势数据。支持MySQL/MariaDB最常用、PostgreSQL、Oracle。5. Web 界面Web Interface基于 PHP 的可视化控制台用于配置、查看监控、告警管理、报表。路径http://serverIP/zabbix6. 其他工具Zabbix Sender手动/脚本向 Server 推送自定义数据。Zabbix GetServer 端手动测试获取 Agent 数据调试用。Zabbix 核心定义术语说明监控项Item采集的具体指标如 CPU 使用率、内存占用、网卡流量是数据采集的最小单元。触发器Trigger基于监控项设置的阈值规则如 CPU 使用率 90% 持续 5 分钟触发异常状态。动作Action触发器异常后执行的操作发邮件、短信、执行脚本、告警升级。模板Template预定义的监控项、触发器、图形集合可批量应用到主机简化配置。主机Host被监控的设备服务器、交换机、虚拟机需关联模板才能监控。主动模式Agent 主动向 Server 推送数据适合跨网络、降低 Server 负载。被动模式Server 主动向 Agent 拉取数据默认模式配置简单。使用场景服务器监控Linux/Windows 服务器的 CPU、内存、磁盘、网络、进程、负载、日志。网络设备监控交换机、路由器、防火墙的端口流量、状态、CPU、内存SNMP。应用服务监控WebNginx/Apache、数据库MySQL/PostgreSQL/Oracle、中间件Redis、Kafka、Tomcat、容器Docker/K8s。云平台监控阿里云、AWS、VMware、OpenStack 虚拟机与资源状态。业务指标监控接口响应时间、订单量、用户在线数、API 成功率自定义脚本/Zabbix Sender。分布式/跨机房监控多地域机房、网络隔离环境使用 Zabbix Proxy。告警与自愈异常自动通知、执行恢复脚本、服务重启、故障升级通知。搭建 LNMP 架构Zabbix Server 部署环境规划主机名IP功能zabbix-server10.1.8.131装 Zabbix Servermysql10.1.8.132被监控端1. 安装 Nginx# 创建 Nginx yum 源[rootzabbix-server ~]# vim /etc/yum.repos.d/nginx.repo[nginx]namenginx repobaseurlhttp://nginx.org/packages/centos/7/$basearch/enabled1gpgcheck0# 安装 Nginx[rootzabbix-server ~]# yum install nginx -y# 启动并设置开机自启[rootzabbix-server ~]# systemctl start nginx[rootzabbix-server ~]# systemctl enable nginx# 防火墙放行 HTTP[rootzabbix-server ~]# firewall-cmd --add-servicehttp --zonepublic --permanent[rootzabbix-server ~]# firewall-cmd --reload测试 Nginx访问http://10.1.8.131应看到 Welcome to nginx 页面。2. 安装 MariaDB# 配置 MariaDB 10.6 yum 源Zabbix 6.0 需要此版本[rootzabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo[mariadb]nameMariaDB baseurlhttps://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/ enabled1gpgcheck0# 安装 MariaDB[rootzabbix-server ~]# yum -y install mariadb-server mariadb# 启动并设置开机自启[rootzabbix-server ~]# systemctl enable mariadb --now# 设置 root 密码并清理匿名用户[rootzabbix-server ~]# mysqlMariaDB[(none)]DELETE FROM mysql.user WHEREUser;MariaDB[(none)]ALTERUSERrootlocalhost IDENTIFIED BYroot123;MariaDB[(none)]FLUSH PRIVILEGES;MariaDB[(none)]QUIT# 测试连接[rootzabbix-server ~]# mysql -uroot -proot1233. 安装 PHP# 安装 EPEL 并更换镜像源[rootzabbix-server ~]# yum -y install epel-release[rootzabbix-server ~]# sed -i s/#baseurl/baseurl/g /etc/yum.repos.d/epel.repo[rootzabbix-server ~]# sed -i s/metalink/#metalink/g /etc/yum.repos.d/epel.repo[rootzabbix-server ~]# sed -i shttps\?://download.[a-z]*\.[a-z]*/pubhttps://repo.huaweicloud.comg /etc/yum.repos.d/epel.repo# 安装 Webtatic 源并安装 PHP 7.2[rootzabbix-server ~]# rpm -Uvh https://mirror.webstatic.com/yum/el7/webtatic-release.rpm[rootzabbix-server ~]# yum -y install php72w php72w-cli php72w-common php72w-devel \php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm\php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath4. 配置 Nginx 支持 PHP# 修改 php-fpm 配置文件将 user/group 改为 nginx[rootzabbix-server ~]# vim /etc/php-fpm.d/www.conf8usernginx10groupnginx# 配置 Nginx 默认站点[rootzabbix-server ~]# vim /etc/nginx/conf.d/default.conf# 在 index 行添加 index.php9index index.php index.html index.htm;# 取消 PHP 处理部分的注释并修改 root 和 fastcgi_param29location ~\.php${30root /usr/share/nginx/html;31fastcgi_pass127.0.0.1:9000;32fastcgi_index index.php;33fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;34include fastcgi_params;}5. 配置 PHP[rootzabbix-server ~]# vim /etc/php.ini202short_open_tagOn359expose_phpOff368max_execution_time300378max_input_time300389memory_limit128M656post_max_size16M799upload_max_filesize2M800always_populate_raw_post_data-1877date.timezoneAsia/Shanghai# 启动 php-fpm 并重启 Nginx[rootzabbix-server ~]# systemctl enable php-fpm --now[rootzabbix-server ~]# systemctl restart nginx6. 测试 PHP 环境测试 PHP 信息[rootzabbix-server ~]# vim /usr/share/nginx/html/info.php?php phpinfo();?访问http://10.1.8.131/info.php查看 PHP 信息。测试数据库连接[rootzabbix-server ~]# vim /usr/share/nginx/html/info.php?php$linkmysqli_connect(127.0.0.1,root,root123);if($link)echosuccess;elseechofail;?注mysql_connect自 PHP 5.5.0 起已废弃建议使用 mysqli 或 PDO。7. 创建 Zabbix 数据库及账号[rootzabbix-server ~]# mysql -uroot -proot123MariaDB[(none)]CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;MariaDB[(none)]GRANT ALL PRIVILEGES ON *.* TOzabbix%IDENTIFIED BYzabbix123;MariaDB[(none)]GRANT ALL PRIVILEGES ON *.* TOzabbixlocalhostIDENTIFIED BYzabbix123;MariaDB[(none)]FLUSH PRIVILEGES;MariaDB[(none)]QUIT测试 Zabbix 数据库连接[rootzabbix-server ~]# vim /usr/share/nginx/html/info.php?php$linkmysqli_connect(127.0.0.1,zabbix,zabbix123);if($link)echozabbix数据库连接成功;elseechozabbix数据库连接失败;?安装 Zabbix Server1. 导入数据库# 解压 Zabbix 源码包[rootzabbix-server ~]# tar zxvf zabbix-6.0.6.tar.gz# 进入数据库脚本目录[rootzabbix-server ~]# cd /root/zabbix-6.0.6/database/mysql/# 按顺序导入[rootzabbix-server mysql]# mysql -uroot -proot123 zabbix schema.sql[rootzabbix-server mysql]# mysql -uroot -proot123 zabbix images.sql[rootzabbix-server mysql]# mysql -uroot -proot123 zabbix data.sql[rootzabbix-server mysql]# mysql -uroot -proot123 zabbix double.sql[rootzabbix-server mysql]# mysql -uroot -proot123 zabbix history_pk_prepare.sql验证导入[rootzabbix-server mysql]# mysql -uroot -proot123MariaDB[(none)]USE zabbix;MariaDB[zabbix]SHOW TABLES;# 应看到约178张表2. 安装依赖包及编译 Zabbix# 安装依赖[rootzabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel \libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel\openldap-devel libcurl-devel fping gcc gcc-cmake# 创建 zabbix 用户[rootzabbix-server ~]# useradd -s /sbin/nologin -M zabbix# 设置编译标志[rootzabbix-server ~]# export CFLAGS-stdgnu99# 配置[rootzabbix-server ~]# cd zabbix-6.0.6/[rootzabbix-server zabbix-6.0.6]# ./configure --sysconfdir/etc/zabbix/ \--enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2\--with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl\--with-ldap --with-libcurl --with-libpcre# 编译安装[rootzabbix-server zabbix-6.0.6]# make install# 检查版本[rootzabbix-server ~]# zabbix_server --version3. 修改 Zabbix Server 配置文件[rootzabbix-server ~]# vim /etc/zabbix/zabbix_server.conf38LogFile/var/log/zabbix_server.log123DBPasswordzabbix123# 创建日志文件并修改权限[rootzabbix-server ~]# touch /var/log/zabbix_server.log[rootzabbix-server ~]# chown zabbix.zabbix /var/log/zabbix_server.log4. 配置 systemd 服务[rootzabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service[Unit]DescriptionZabbix Server with MySQL DBAftersyslog.target network.target mariadb.service[Service]TypesimpleExecStart/usr/local/sbin/zabbix_server-fUserzabbix[Install]WantedBymulti-user.target# 启动服务[rootzabbix-server ~]# systemctl start zabbix-server[rootzabbix-server ~]# netstat -ntap | grep 10051 # 应看到监听5. 复制前端页面[rootzabbix-server ~]# cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/[rootzabbix-server ~]# chown -R nginx:nginx /usr/share/nginx/html/[rootzabbix-server ~]# systemctl restart nginx6. Web 前端安装访问http://10.1.8.131按照向导完成安装检查 PHP 环境配置数据库连接主机127.0.0.1端口3306数据库zabbix用户zabbix密码zabbix123完成安装后配置文件/usr/share/nginx/html/conf/zabbix.conf.php自动生成。默认登录信息用户名Admin密码zabbix被监控端安装 Agent2环境准备mysql[rootmysql ~]# systemctl stop firewalld[rootmysql ~]# setenforce 0[rootmysql ~]# hostnamectl set-hostname mysql安装 Agent2# 更新 CA 证书[rootmysql ~]# yum update ca-certificates -y# 安装 Zabbix 官方仓库[rootmysql ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm# 安装 Agent2[rootmysql ~]# yum install zabbix-agent2 -y配置 Agent2[rootmysql ~]# vim /etc/zabbix/zabbix_agent2.conf13PidFile/var/run/zabbix/zabbix_agent2.pid32LogFile/var/log/zabbix/zabbix_agent2.log43LogFileSize082Server10.1.8.131# 指向 Zabbix Server135ServerActive10.1.8.131# 指向 Zabbix Server146Hostnamemysql# 主机名283Include/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf# 启动并设置开机自启[rootmysql ~]# systemctl enable zabbix-agent2 --now在 Zabbix Web 中添加被监控主机登录 Zabbix Webhttp://10.1.8.131。导航至配置 → 主机 → 创建主机。填写主机名称mysql可见名称mysql群组选择如Linux serversIP 地址10.1.8.132端口10050Agent 默认端口模板搜索并添加Template OS Linux by Zabbix agent或相应模板。单击添加。稍等片刻主机状态变为绿色可用。配置邮件告警1. 在 Zabbix Server 上安装 mailx[rootzabbix-server ~]# yum install mailx -y2. 配置 QQ 邮箱使用 SMTP编辑/etc/mail.rc在末尾添加setfromxxxxxxxxqq.comsetsmtpsmtps://smtp.qq.com:465setsmtp-auth-userxxxxxxxqq.comsetsmtp-auth-passwordxxxxxxxxxxxxxxx# 邮箱授权码setsmtp-authloginsetssl-verifyignoresetnss-config-dir/root/.certs获取 QQ 邮箱 SSL 证书[rootzabbix-server ~]# mkdir -p /root/.certs/[rootzabbix-server ~]# echo -n | openssl s_client -connect smtp.qq.com:465 | \sed-ne/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p~/.certs/qq.crt[rootzabbix-server ~]# certutil -A -n GeoTrust SSL CA -t C, -d ~/.certs -i ~/.certs/qq.crt[rootzabbix-server ~]# certutil -A -n GeoTrust Global CA -t C, -d ~/.certs -i ~/.certs/qq.crt[rootzabbix-server ~]# cd /root/.certs/[rootzabbix-server .certs]# certutil -A -n GeoTrust SSL CA - G3 -t Pu,Pu,Pu -d ./ -i qq.crt3. 配置 Zabbix 告警脚本# 修改 zabbix_server.conf 指定脚本目录[rootzabbix-server ~]# vim /etc/zabbix/zabbix_server.confAlertScriptsPath/usr/lib/zabbix/alertscripts# 创建目录并授权[rootzabbix-server ~]# mkdir -p /usr/lib/zabbix/alertscripts[rootzabbix-server ~]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts# 创建邮件发送脚本[rootzabbix-server ~]# vim /usr/lib/zabbix/alertscripts/mailx.sh#!/bin/bash#send mailmessagesecho$3|tr\r\n\nsubjectecho$2|tr\r\n\necho${messages}|mail-s${subject}$1/tmp/mailx.log21# 授权[rootzabbix-server ~]# touch /tmp/mailx.log[rootzabbix-server ~]# chown zabbix.zabbix /tmp/mailx.log[rootzabbix-server ~]# chmod x /usr/lib/zabbix/alertscripts/mailx.sh# 测试脚本[rootzabbix-server ~]# cd /usr/lib/zabbix/alertscripts/[rootzabbix-server alertscripts]# ./mailx.sh xxxxxxxqq.com hello mailx.sh This is test# 检查邮箱是否收到4. 在 Zabbix Web 中配置报警媒介登录 Zabbix Web导航至管理 → 报警媒介类型 → 创建媒体类型。名称mail-test类型脚本脚本名称mailx.sh脚本参数按顺序添加{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}单击添加。5. 为用户配置报警媒介导航至管理 → 用户点击Admin用户。切换到报警媒介选项卡单击添加。类型选择mail-test收件人填写自己的邮箱地址。设置接收时间、严重性等单击添加。单击更新保存。6. 配置动作Action导航至配置 → 动作 → Trigger actions。删除默认动作如有单击创建动作。名称发送邮件告警条件默认或根据需求调整。操作选项卡添加操作发送消息发送给Admin或指定用户仅发送给mail-test主题{TRIGGER.STATUS}:{TRIGGER.NAME}消息告警主机: {HOST.NAME} 告警 IP: {HOST.IP} 告警时间: {EVENT.DATE}-{EVENT.TIME} 告警等级: {TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME}:{ITEM.VALUE} 事件 ID: {EVENT.ID}恢复操作选项卡添加操作发送消息收件人Admin仅发送给mail-test主题{TRIGGER.STATUS}:{TRIGGER.NAME}消息恢复主机: {HOST.NAME} 恢复 IP: {HOST.IP} 恢复时间: {EVENT.DATE}-{EVENT.TIME} 恢复等级: {TRIGGER.SEVERITY} 恢复信息: {TRIGGER.NAME}:{ITEM.VALUE} 恢复 ID: {EVENT.ID}单击添加完成。验证告警在被监控端mysql停止 MySQL 服务[rootmysql ~]# systemctl stop mysqld等待几分钟Zabbix 触发告警检查邮箱是否收到告警邮件。重新启动服务后应收到恢复邮件。监控仪表盘登录 Zabbix Web 首页可查看仪表盘显示主机状态、触发器问题、最新数据等。6. **恢复操作** 选项卡 - 添加操作**发送消息** - 收件人Admin - 仅发送给mail-test - **主题** {TRIGGER.STATUS}:{TRIGGER.NAME} - **消息** 恢复主机: {HOST.NAME} 恢复 IP: {HOST.IP} 恢复时间: {EVENT.DATE}-{EVENT.TIME} 恢复等级: {TRIGGER.SEVERITY} 恢复信息: {TRIGGER.NAME}:{ITEM.VALUE} 恢复 ID: {EVENT.ID} 7. 单击 **添加** 完成。 ------ ## 验证告警 - 在被监控端mysql停止 MySQL 服务 bash [rootmysql ~]# systemctl stop mysqld等待几分钟Zabbix 触发告警检查邮箱是否收到告警邮件。重新启动服务后应收到恢复邮件。监控仪表盘登录 Zabbix Web 首页可查看仪表盘显示主机状态、触发器问题、最新数据等。