【网络运维】企业级监控平台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自动化集成、自定义监控项等高级功能,以提升监控系统的可扩展性与自动化水平。

相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式