【网络运维】企业级监控平台Zabbix:部署与实践指南

Zabbix部署与实践指南

一、Zabbix概述与架构

Zabbix是由Alexei Vladishev创建,并由Zabbix SIA持续维护的企业级分布式监控解决方案。该软件专用于监控网络参数、服务器、虚拟机、应用程序、服务、数据库、网站及云平台等各类资源的健康状态与完整性。Zabbix提供灵活的告警机制,支持基于邮件的告警配置,便于快速响应故障。同时,其出色的报表与数据可视化功能也为容量规划提供了有力支持。

Zabbix支持轮询(Polling)和捕获(Trapping)两种数据采集方式,所有配置、报表及统计信息均可通过Web前端进行访问。Zabbix基于GNU通用公共许可证第2版发布,完全免费且开源,适用于从中小型组织到大型企业的各类IT基础设施监控场景。

Zabbix架构主要由以下核心组件构成:

  • Zabbix Server:核心组件,负责接收Agent上报的数据,存储配置信息、监控数据与历史记录。
  • Database Storage:用于存储所有配置信息及Zabbix收集的数据,支持MySQL、PostgreSQL等数据库。
  • Web Interface:基于Web的管理界面,通常与Server部署在同一台服务器上,支持跨平台访问。
  • Zabbix Proxy:可选组件,可用于分布式监控环境中代理数据收集,减轻Server负载。
  • Zabbix Agent :部署在监控目标上,用于采集本地指标数据。自Zabbix 4.4起提供两种Agent:
    • Zabbix Agent(C语言编写,轻量级,跨平台)
    • Zabbix Agent2(Go语言编写,支持插件扩展,灵活性更高)

数据在Zabbix中的流动遵循"主机 → 监控项 → 触发器 → 动作"的层次结构,这种设计使得监控配置既灵活又可模板化,大幅提升部署效率。


二、Zabbix版本生命周期说明

Zabbix提供两种版本类型:长期支持版本(LTS)和标准版本。

长期支持版本(LTS)生命周期

  • 开发周期:约1.5年
  • 全面支持期:3年(提供功能更新与安全修复)
  • 有限支持期:2年(仅提供高危安全修复)

标准版本生命周期

  • 开发周期:6个月
  • 全面支持期:6个月
  • 有限支持期:至少6个月(直至下一标准版发布)

目前Zabbix官方支持的版本及其支持时间如下:

版本 发布日期 全面支持截止 有限支持截止
Zabbix 7.4 2025-07-01 2026-01-01 Q3 2026
Zabbix 7.2 2024-12-10 2025-06-30 2025-12-31
Zabbix 7.0 LTS 2024-06-04 2027-06-30 2029-06-30
Zabbix 6.0 LTS 2022-02-08 2025-02-28 2027-02-28

三、Zabbix Server部署实战(基于LNMP环境)

环境说明

  • 主机名:zabbix-server
  • IP地址:192.168.108.50
  • 操作系统:CentOS 7
  • 架构:LNMP(Linux + Nginx + MariaDB + PHP)

1. 安装Nginx

bash 复制代码
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/\$basearch/
enabled=1
gpgcheck=0
EOF

yum install nginx -y
systemctl start nginx
systemctl enable nginx

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

访问 http://192.168.108.50 确认Nginx已正常运行。

2. 安装MariaDB 10.5+

Zabbix 6.0要求MariaDB版本不低于10.5。

bash 复制代码
cat > /etc/yum.repos.d/mariadb.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled = 1
gpgcheck = 0
EOF

yum -y install mariadb-server mariadb
systemctl enable mariadb --now

mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "ALTER USER root@localhost IDENTIFIED BY 'root123';"

测试数据库连接:

bash 复制代码
mysql -uroot -proot123

3. 安装PHP 7.2

bash 复制代码
yum -y install epel-release
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

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-bcmath

4. 配置Nginx支持PHP

编辑PHP-FPM配置文件:

bash 复制代码
vim /etc/php-fpm.d/www.conf
# 修改以下两行:
user = nginx
group = nginx

编辑Nginx默认站点配置:

bash 复制代码
vim /etc/nginx/conf.d/default.conf
# 在server段中添加:
index index.php index.html index.htm;

location ~ \.php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
    include        fastcgi_params;
}

5. 调整PHP配置参数

bash 复制代码
vim /etc/php.ini
# 修改以下参数:
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai

启动PHP-FPM并重启Nginx:

bash 复制代码
systemctl enable php-fpm --now
systemctl restart nginx

创建PHP测试页面:

bash 复制代码
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

访问 http://192.168.108.50/info.php 确认PHP运行正常。

6. 创建Zabbix数据库与用户

bash 复制代码
mysql -uroot -proot123 <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
FLUSH PRIVILEGES;
EOF

测试Zabbix用户连接:

php 复制代码
<?php
$link = mysqli_connect('127.0.0.1', 'zabbix', 'zabbix123');
if ($link) echo "Zabbix数据库连接成功";
else echo "Zabbix数据库连接失败";
?>

7. 导入Zabbix数据库结构

bash 复制代码
tar zxvf zabbix-6.0.6.tar.gz
cd zabbix-6.0.6/database/mysql/
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
mysql -uroot -proot123 zabbix < double.sql
mysql -uroot -proot123 zabbix < history_pk_prepare.sql

验证表是否导入成功:

bash 复制代码
mysql -uroot -proot123 -e "use zabbix; show tables;"

8. 编译安装Zabbix Server

bash 复制代码
yum install -y mysql-devel pcre-devel openssl-devel libxml2-devel \
net-snmp-devel libssh2-devel openipmi-devel libevent-devel \
openldap-devel libcurl-devel fping gcc gcc-c++ make

useradd -s /sbin/nologin -M zabbix
export CFLAGS="-std=gnu99"

cd 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

make install

9. 配置与启动Zabbix Server

编辑配置文件:

bash 复制代码
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix-server.log
DBPassword=zabbix123

创建日志文件并设置权限:

bash 复制代码
touch /var/log/zabbix-server.log
chown zabbix:zabbix /var/log/zabbix-server.log

创建Systemd服务文件:

bash 复制代码
cat > /usr/lib/systemd/system/zabbix-server.service <<EOF
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix-server -f
User=zabbix

[Install]
WantedBy=multi-user.target
EOF

systemctl start zabbix-server
systemctl enable zabbix-server
netstat -ntap | grep 10051

10. 部署Zabbix Web前端

bash 复制代码
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/

访问 http://192.168.108.50 进入Zabbix安装向导。


按照向导提示完成配置:

  1. 检查前提条件
  2. 配置数据库连接(类型选择MySQL,输入数据库信息)
  3. 设置Zabbix Server详细信息
  4. 确认安装配置
  5. 完成安装

安装完成后,使用默认账号登录:

  • 用户名:Admin
  • 密码:zabbix

四、Zabbix Agent部署与主机监控

1. 被监控端环境准备

  • 主机名:mysql001
  • IP地址:192.168.108.51
  • 操作系统:CentOS 7
bash 复制代码
systemctl stop firewalld
setenforce 0
hostnamectl set-hostname mysql001

2. 安装Zabbix Agent2

bash 复制代码
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install zabbix-agent2 -y
systemctl enable zabbix-agent2 --now

3. 配置Agent2

bash 复制代码
vim /etc/zabbix/zabbix_agent2.conf
# 修改以下参数:
Server=192.168.108.50
ServerActive=192.168.108.50
Hostname=mysql001

重启Agent服务:

bash 复制代码
systemctl restart zabbix-agent2

4. 在Zabbix Web中添加主机

  1. 登录Zabbix Web界面
  2. 进入 配置 → 主机 → 创建主机
  3. 填写主机信息:
    • 主机名称:mysql001
    • 可见名称:mysql001
    • 群组:选择或创建群组(如Linux servers)
  4. 添加接口:
    • IP地址:192.168.108.51
    • 端口:10050
  5. 关联模板(如Template OS Linux by Zabbix agent)
  6. 保存配置

稍等片刻,主机可用性将显示为绿色,表示监控已生效。


五、邮件告警配置实战

1. 在Zabbix Server上配置邮件发送环境

安装mailx工具:

bash 复制代码
yum install mailx -y

配置mailx(以QQ邮箱为例):

bash 复制代码
vim /etc/mail.rc
# 在文件末尾添加:
set from=<个人qq邮箱>
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=<个人qq邮箱>
set smtp-auth-password=lnsbtyuhuzhqcage
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

创建证书目录并下载QQ邮箱SSL证书:

bash 复制代码
mkdir -p /root/.certs/
echo -n | openssl s_client --connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt

测试邮件发送:

bash 复制代码
echo "测试邮件正文" | mailx -s "邮箱测试" <个人qq邮箱>

2. 配置Zabbix告警脚本

创建告警脚本目录:

bash 复制代码
vim /etc/zabbix/zabbix_server.conf
# 确保以下配置存在:
AlertScriptsPath=/usr/lib/zabbix/alertscripts

mkdir -p /usr/lib/zabbix/alertscripts
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
systemctl restart zabbix-server

编写邮件发送脚本:

bash 复制代码
vim /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
touch /tmp/mailx.log
chown zabbix:zabbix /tmp/mailx.log

测试脚本:

bash 复制代码
cd /usr/lib/zabbix/alertscripts/
./mailx.sh <个人qq邮箱> "测试主题" "测试消息内容"

3. 配置Zabbix告警媒介

  1. 进入 管理 → 报警媒介类型 → 创建媒体类型
  2. 填写信息:
    • 名称:Mail-Test
    • 类型:脚本
    • 脚本名称:mailx.sh
    • 脚本参数:
      • {ALERT.SENDTO}
      • {ALERT.SUBJECT}
      • {ALERT.MESSAGE}
  3. 保存配置

4. 为用户配置告警媒介

  1. 进入 管理 → 用户 → Admin(点击用户名)
  2. 切换到 报警媒介 标签页
  3. 点击 添加
  4. 选择类型:Mail-Test
  5. 收件人:填写接收告警的邮箱地址
  6. 保存并更新用户信息

5. 创建告警动作

  1. 进入 配置 → 动作 → Trigger actions
  2. 删除默认动作(可选),点击 创建动作
  3. 填写动作名称,如:Send email on problem
  4. 条件配置(示例:触发器状态=问题)
  5. 操作配置:
    • 步骤持续时间:0
    • 操作类型:发送消息
    • 发送到用户:选择Admin
    • 仅送到:Mail-Test
  6. 定义消息内容:

问题通知消息:

复制代码
主题:{TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}

恢复通知消息:

复制代码
主题:{TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
  1. 保存动作配置

6. 测试告警功能

在被监控主机上停止MySQL服务以触发告警:

bash 复制代码
systemctl stop mysqld

等待几分钟后,配置的邮箱将收到告警邮件。恢复服务后,也会收到恢复通知邮件。


六、监控仪表盘与日常管理

Zabbix提供丰富的仪表盘功能,可自定义监控视图。登录后默认显示的系统仪表盘已包含主机可用性、最新问题、系统状态等关键信息。通过 监测 → 仪表盘 可创建个性化监控面板,添加图形、聚合图形、最新数据等各类组件。

对于MySQL数据库监控,可导入或创建专门的数据库监控模板,监控连接数、查询性能、缓冲池使用率等关键指标。


总结

本文详细介绍了Zabbix监控平台的架构、部署流程、Agent配置、邮件告警集成等核心内容。Zabbix作为成熟的企业级监控解决方案,其灵活的架构和丰富的功能可满足不同规模的监控需求。通过合理的配置与模板化部署,能够快速构建起覆盖服务器、应用、服务、网络等全方位的监控体系。

实际部署中需注意版本兼容性、数据库性能优化、告警策略细化等环节。Zabbix社区活跃,文档齐全,遇到问题时可通过官方文档或社区论坛获取支持。随着监控规模的扩大,可进一步探索Zabbix Proxy分布式部署、API自动化集成、自定义监控项等高级功能,以提升监控系统的可扩展性与自动化水平。

相关推荐
小周学学学2 小时前
Vcenter Auto Deploy安装与使用
linux·运维·服务器
微爱帮监所写信寄信2 小时前
微爱帮监狱写信寄信工具服务器【Linux篇章】再续:TCP协议——用技术隐喻重构网络世界的底层逻辑
linux·服务器·开发语言·网络·网络协议·小程序·监狱寄信
VekiSon3 小时前
Linux网络编程——IO多路复用
linux·运维·网络
好记忆不如烂笔头abc3 小时前
Ubuntu 20.04.6上实现远程桌面连接
服务器·网络·数据库
乐维_lwops3 小时前
IT运维的核心目标和主要工作内容
运维·网络·it运维
云老大TG:@yunlaoda3603 小时前
华为云国际站代理商运维保障的具体要求有哪些?
大数据·运维·华为云
旖旎夜光3 小时前
Linux(3)(上)
linux·学习
❀͜͡傀儡师3 小时前
Docker安装SQL Server并使用Navicat远程连接
运维·docker·容器
zhuzewennamoamtf4 小时前
Linux Regmap API寄存器映射抽象化
linux·运维·服务器