从监控小白到上手:用Zabbix 5.0 + MariaDB + Nginx搭建你的第一个企业级监控平台
2026/6/8 20:06:26 网站建设 项目流程

从监控小白到上手:用Zabbix 5.0 + MariaDB + Nginx搭建你的第一个企业级监控平台

想象一下,当你负责的线上服务突然出现性能瓶颈,用户投诉接踵而至,而你却对系统状态一无所知——这种"盲人摸象"的运维体验,正是监控系统要解决的核心痛点。作为开源监控领域的标杆,Zabbix以其全栈监控能力高度可定制性,成为中小企业构建监控体系的首选武器。本文将带你从零开始,在CentOS 7上部署Zabbix 5.0全组件环境(Server+Agent+Web前端),配合MariaDB数据库与Nginx Web服务器,打造一个真正可投入生产的监控平台。不同于简单罗列命令的教程,我们会重点解析:

  • 为什么选择这套技术组合?
  • 每个组件在监控体系中的角色
  • 安装过程中的关键决策点
  • 初期最值得关注的监控指标

1. 环境准备与架构设计

在开始敲命令之前,我们需要理解这个技术栈的协同关系。Zabbix Server作为大脑,负责收集、处理和存储监控数据;MariaDB作为持久化存储;Nginx提供Web界面访问;Zabbix Agent部署在被监控主机上采集数据。这种分离式架构既保证了扩展性,又能根据业务规模灵活调整资源配置。

1.1 系统环境配置

首先确保使用干净的CentOS 7最小化安装,建议配置:

# 检查系统版本 cat /etc/redhat-release # 更新系统 yum update -y

关键决策点:生产环境强烈建议禁用SELinux以避免权限问题,但学习环境可以保持开启以练习权限配置:

# 临时关闭SELinux(重启失效) setenforce 0 # 永久关闭需修改配置文件 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

注意:如果后续遇到权限拒绝错误,可通过audit2allow工具生成新的SELinux策略模块。

1.2 存储库配置

Zabbix官方提供了版本明确的存储库,这是避免依赖冲突的关键:

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all

组件选择建议

  • 对于小于500个监控项的环境,MariaDB 10.2+完全够用
  • 高并发场景建议使用MySQL 8.0或PostgreSQL
  • Web服务器选择Nginx而非Apache,资源占用更低

2. 数据库部署与优化

MariaDB作为Zabbix的数据仓库,其配置直接影响监控性能。以下是经过生产验证的参数调优方案。

2.1 安装与安全加固

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

执行安全初始化脚本时,建议如下配置:

mysql_secure_installation
  • 设置强密码(不要使用示例中的123456)
  • 允许root远程登录(便于后期维护)
  • 移除测试数据库

2.2 专属数据库创建

通过MySQL客户端创建专用数据库,注意字符集设置:

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'zabbix'@'%' IDENTIFIED BY 'ComplexPassword123!'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%'; FLUSH PRIVILEGES;

重要:生产环境务必限制zabbix用户的访问IP(如'zabbix'@'192.168.1.%')

2.3 导入初始数据结构

使用zcat管道高效导入:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

性能提示:大型部署建议在导入前临时关闭二进制日志:

SET sql_log_bin=0; -- 导入完成后恢复 SET sql_log_bin=1;

3. Zabbix服务端部署

服务端是监控体系的核心,需要特别注意资源分配和参数调优。

3.1 安装核心组件

yum install -y zabbix-server-mysql zabbix-agent

编辑配置文件/etc/zabbix/zabbix_server.conf关键参数:

DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=ComplexPassword123! # 根据CPU核心数调整 StartPollers=8 # 历史数据缓存大小(MB) HistoryCacheSize=256M # 趋势数据缓存大小(MB) TrendCacheSize=128M

3.2 前端部署与Nginx整合

安装SCL(Software Collections)版本的PHP和Nginx:

yum install -y centos-release-scl yum install -y zabbix-web-mysql-scl zabbix-nginx-conf-scl

配置Nginx虚拟主机(/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf):

server { listen 80; server_name zabbix.yourdomain.com; root /opt/rh/rh-zabbix-web/root/usr/share/zabbix; location / { index index.php; } location ~ \.php$ { fastcgi_pass unix:/var/opt/rh/rh-php72/run/php-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

PHP时区配置(/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf):

php_value[date.timezone] = Asia/Shanghai

4. 服务启动与初始化配置

4.1 启动所有服务

systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

验证服务状态:

systemctl status zabbix-server # 检查端口监听 netstat -tulnp | grep -E '10051|80'

4.2 Web界面初始化

访问http://your_server_ip完成安装向导:

  1. 检查所有前置条件是否满足(PHP模块、数据库连接等)
  2. 配置数据库连接参数
  3. 设置管理员账户(不要使用默认Admin/zabbix)
  4. 下载并保存配置文件zabbix.conf.php

安全加固建议

  • 立即修改默认密码
  • 启用HTTPS加密
  • 配置IP访问限制

5. 你的第一个监控项

安装完成只是开始,真正的价值在于监控实施。让我们从基础但关键的监控项开始。

5.1 自动发现本地主机

Zabbix已自动注册了Server本地的Agent,在"Configuration > Hosts"中可以看到:

  • 主机名:Zabbix server
  • 可见名称:建议改为更有意义的名称(如DC1-Monitor-Server)
  • 已链接的模板:包括CPU、内存、磁盘等基础监控

5.2 添加自定义监控项

以监控Nginx状态为例:

  1. 在主机配置页面选择"Items"
  2. 点击"Create item"
  3. 填写关键参数:
Name: Nginx active connections Key: net.tcp.listen[80] Type: Zabbix agent Update interval: 30s

5.3 创建可视化仪表盘

将关键指标集中展示:

  1. 进入"Monitoring > Dashboards"
  2. 点击"Create dashboard"
  3. 添加"Problems"和"Graph"等部件
  4. 拖拽调整布局

最佳实践:初期重点关注这些指标:

  • 系统负载(1m,5m,15m)
  • 内存使用率(包括swap)
  • 磁盘空间(/和关键分区)
  • 关键服务端口状态

6. 进阶配置技巧

当基本监控运行稳定后,这些功能可以显著提升监控价值。

6.1 触发器配置示例

当磁盘空间超过85%时触发警告:

Name: Free disk space less than 15% on {HOST.NAME} Expression: {Template OS Linux:vfs.fs.size[/,pfree].last()} < 15 Severity: Warning

6.2 用户权限管理

创建只读用户组:

  1. 进入"Administration > User groups"
  2. 创建组"Read-only Users"
  3. 设置权限为"Read"模式
  4. 添加对特定主机组的访问权限

6.3 邮件报警配置

  1. 在"Administration > Media types"配置SMTP
  2. 用户配置页面添加邮件地址
  3. 创建动作(Action)定义触发条件
Name: Send email on high severity problems Conditions: Trigger severity >= High Operations: Send message to Admin group

7. 性能调优与维护

随着监控规模扩大,这些优化措施能保持系统稳定。

7.1 数据库维护

定期清理历史数据(添加至crontab):

-- 保留30天历史数据 DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); OPTIMIZE TABLE history;

7.2 监控Zabbix自身

关键内部监控项:

监控项健康阈值检查频率
zabbix[wcache,values]< 80% buffer used5m
zabbix[process,alert manager]Running1m
mysql.size[zabbix,pfree]> 20%1h

7.3 备份策略

必须定期备份这些内容:

# 数据库备份 mysqldump -uzabbix -p zabbix | gzip > /backup/zabbix_db_$(date +%F).sql.gz # 配置文件备份 tar czf /backup/zabbix_etc_$(date +%F).tar.gz /etc/zabbix

在真实生产环境中,我们曾遇到因未监控Zabbix自身导致监控盲区的情况——直到用户报告问题才发现监控服务已经停止工作6小时。这促使我们建立了完善的层级监控体系:从基础设施到应用服务,再到监控系统自身,形成完整的监控闭环。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询