Zabbix 6.0 LTS在Rocky Linux 9上的企业级部署与监控实践 1. 从零到一为什么选择Zabbix作为你的监控起点如果你正在搭建自己的服务器环境或者管理着几台到几十台不等的线上机器那么“监控”这个词迟早会出现在你的待办清单里。服务器挂了没人知道、磁盘满了没预警、网站响应慢了才发现这些场景对任何一个运维或开发者来说都是噩梦。我经历过太多半夜被电话叫醒处理故障的窘境直到把监控体系搭建起来才真正睡上了安稳觉。在众多监控工具里Zabbix一直是我的首选尤其是对于从零开始构建监控能力的中小团队或个人项目。Zabbix的魅力在于它的“全能”与“开源”。它不像一些云监控服务有使用成本或功能限制你可以完全掌控它从服务器性能、网络设备状态到业务应用的自定义指标几乎没有它不能监控的。更重要的是它的架构非常经典和健壮由Server、Agent、Database和Web前端组成理解它的部署过程本身就是对监控体系一次深刻的学习。网上教程虽多但要么过于简略跳过了关键配置要么环境老旧不适用新系统。今天我就以目前企业级环境中更常见的Rocky Linux 9.x为例带你走一遍从操作系统准备到Zabbix仪表盘正常访问的全流程。我会把每一步背后的“为什么”讲清楚并附上我趟过的所有坑和解决方案确保你跟着做就能成功。2. 部署前的战略准备环境规划与关键决策动手安装之前花十分钟做好规划能避免后面几个小时的重装和排错。Zabbix的安装不是简单地运行几条命令它涉及到操作系统、数据库、Web服务器和PHP环境的协同工作。一个混乱的起步会导致后续配置举步维艰。2.1 操作系统与软件版本选型首先我们得选定战场。我强烈推荐使用Rocky Linux 9.x。作为CentOS的继承者它拥有与RHELRed Hat Enterprise Linux完全一致的稳定性和软件生态非常适合生产环境。相比之下Ubuntu等发行版在包管理方式和一些系统路径上有所不同很多基于RHEL系的教程指令需要转换对新手不友好。接下来是软件版本矩阵这是稳定性的基石Zabbix Server: 我们选择6.0 LTS长期支持版。LTS版本意味着它有长达数年的官方维护和安全更新适合生产环境。追求最新版如6.4可能会遇到未知的兼容性问题。数据库: MySQL 8.0 或 MariaDB 10.5。Zabbix 6.0对MySQL 8.0的支持已经非常完善性能更好。我们将使用MySQL 8.0。Web服务器: Apache httpd。在Rocky Linux上Apache的集成度更高配置更直观。Nginx虽然性能优异但需要额外配置PHP-FPM步骤稍复杂。PHP: 7.4。这是Zabbix 6.0前端所要求的版本必须严格匹配。系统默认的或更高版本的PHP可能会导致前端页面错误。这个组合Rocky Linux 9 Zabbix 6.0 LTS MySQL 8 Apache PHP 7.4是经过大量生产环境验证的“黄金搭配”兼容性最好社区资源也最丰富。2.2 服务器资源评估与规划Zabbix Server本身并不重但它背后的数据库随着监控数据的积累会快速增长。以下是一个适用于监控100个以内主机的基础配置建议CPU: 2核。用于数据处理和告警计算。内存: 4GB。这是底线Zabbix Server和MySQL运行需要足够的内存建议8GB以获得更流畅的体验。磁盘: 50GB以上。重点不在于系统盘而在于为数据库准备足够的空间。监控历史数据和趋势数据是主要的磁盘消耗者。建议将数据库的数据目录挂载在单独的、容量较大的磁盘或分区上。网络: 稳定的内网连接。Agent与Server之间需要持续通信。对于学习或测试环境2核4G的云服务器也完全可以胜任。请确保你的服务器有一个固定的IP地址并准备好用于访问Web前端的端口默认是80/http或443/https。3. 基石搭建系统环境与依赖库的精细配置有了规划我们开始动手。第一步是准备一个“干净”且“营养充足”的系统环境。很多安装失败根源都在于这一步的依赖包缺失或版本冲突。3.1 系统更新与基础工具安装首先通过SSH连接到你的Rocky Linux服务器。我们需要先更新系统到最新状态并安装一些后续步骤必需的工具。# 1. 更新系统所有包 sudo dnf update -y # 2. 安装常用工具和编译依赖有些是Zabbix编译或运行所必需的 sudo dnf install -y vim wget curl net-tools bash-completion tar gzip make gcc-c # 3. 安装EPELExtra Packages for Enterprise Linux仓库 # EPEL提供了大量默认仓库中没有的软件包是必须的。 sudo dnf install -y epel-release执行完上述命令后最好重启一下服务器sudo reboot确保所有更新生效这是一个好习惯。3.2 配置防火墙与SELinux这是一个关键的“防坑”步骤。如果不正确配置你会遇到无法访问Web页面或Agent无法上报数据的问题。防火墙配置Rocky Linux 9默认使用firewalld。我们需要开放Zabbix Server服务端口10051和Web前端端口80。# 开放Zabbix Server端口用于接收Agent数据 sudo firewall-cmd --permanent --add-port10051/tcp # 开放HTTP端口用于访问Web界面 sudo firewall-cmd --permanent --add-port80/tcp # 重新加载防火墙规则使其生效 sudo firewall-cmd --reload # 查看已开放的端口确认规则已添加 sudo firewall-cmd --list-portsSELinux配置SELinux是Linux的安全子系统默认的强制模式会阻止Zabbix的许多正常操作。对于学习和测试环境最简单的做法是将其设置为“宽容模式”Permissive它只记录违规而不阻止。生产环境则需要更精细的策略配置。# 查看当前SELinux状态 getenforce # 临时设置为宽容模式重启后失效 sudo setenforce 0 # 永久设置为宽容模式修改配置文件重启后生效 sudo sed -i s/^SELINUX.*/SELINUXpermissive/ /etc/selinux/config注意将SELinux设置为disabled完全禁用在重启后会导致文件系统重新打标签可能引发其他问题。permissive模式是更安全、更可逆的选择。如果未来你需要严格的安全策略可以再调整为enforcing并配置正确的SELinux策略。4. 核心数据库MySQL 8.0的安装与Zabbix专用优化数据库是Zabbix的心脏所有配置、监控数据和历史记录都存储在这里。安装和初始化数据库的步骤必须准确无误。4.1 安装MySQL 8.0服务器Rocky Linux 9的默认AppStream仓库提供了MySQL 8.0。# 安装MySQL服务器 sudo dnf install -y mysql-server mysql # 启动MySQL服务并设置开机自启 sudo systemctl start mysqld sudo systemctl enable mysqld安装完成后MySQL会为root用户生成一个临时的随机密码。我们需要找到它并进行安全初始化。# 查看MySQL的临时root密码在日志文件中 sudo grep temporary password /var/log/mysqld.log记下输出的密码它看起来像rootlocalhost: xxxxxxxx。接着运行安全配置脚本sudo mysql_secure_installation按照提示操作输入刚才找到的临时密码。提示是否更改root密码时选择Y并设置一个强密码记住它后面会用到。后续关于移除匿名用户、禁止root远程登录、删除测试数据库等选项全部输入Y即可。这是生产环境的安全最佳实践。4.2 创建Zabbix专属数据库与用户现在我们登录MySQL为Zabbix创建一个独立的数据库和用户。绝对不要使用root用户直接作为Zabbix的数据库用户这是严重的安全风险。# 使用root密码登录MySQL mysql -u root -p在MySQL命令行中依次执行以下SQL语句-- 创建名为zabbix的数据库使用utf8mb4字符集和更通用的排序规则 CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; -- 创建一个名为zabbix的数据库用户并设置一个强密码请替换‘YourStrongPasswordHere’ CREATE USER zabbixlocalhost IDENTIFIED BY YourStrongPasswordHere; -- 授予zabbix用户对zabbix数据库的所有权限 GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; -- 使权限生效 FLUSH PRIVILEGES; -- 退出MySQL EXIT;实操心得数据库密码不要使用过于简单的字典单词。可以将服务器IP、项目名等元素组合生成一个自己容易记忆但别人难以猜测的密码。务必把这个密码妥善保存在安全的地方如密码管理器后续配置需要用到。5. 主角登场Zabbix Server与前端的一站式安装环境准备就绪现在可以安装Zabbix本体了。我们将使用Zabbix官方提供的仓库进行安装这是最可靠、最便于后续升级的方式。5.1 添加Zabbix官方仓库并安装Server首先我们需要根据Rocky Linux的版本9和Zabbix的版本6.0来添加正确的仓库。# 下载并安装Zabbix的仓库配置文件 sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm # 清理dnf缓存并重新建立 sudo dnf clean all sudo dnf makecache # 安装Zabbix Server、Agent以及用于连接MySQL的组件 sudo dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent这一条命令安装了多个核心组件zabbix-server-mysql: Zabbix服务器主程序MySQL版。zabbix-web-mysql: Zabbix的Web前端文件。zabbix-apache-conf: 为Apache配置好的Zabbix前端虚拟主机文件。zabbix-sql-scripts: 初始化数据库结构的SQL脚本。zabbix-selinux-policy: 针对SELinux的额外策略如果使用强制模式。zabbix-agent: Zabbix监控客户端用于监控本机。5.2 导入初始数据库结构安装的软件包提供了数据库schema我们需要将其导入到刚才创建的zabbix数据库中。这是让Zabbix“活”起来的关键一步。# 使用zabbix数据库用户将初始化脚本导入到zabbix数据库 # 系统会提示你输入之前为‘zabbix’用户设置的密码 zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -p zabbix这个命令可能会运行几十秒到一分钟因为它正在创建大量的表、索引和初始数据。如果没有报错就说明导入成功了。5.3 配置Zabbix Server连接数据库接下来我们需要告诉Zabbix Server如何连接到我们刚准备好的数据库。编辑Zabbix Server的配置文件sudo vim /etc/zabbix/zabbix_server.conf找到以下关键配置项并进行修改可以使用/键在vim中搜索DBHostlocalhost DBNamezabbix DBUserzabbix DBPasswordYourStrongPasswordHere # 替换成你实际设置的密码保存并退出在vim中按Esc输入:wq回车。5.4 配置PHP时区与前端参数Zabbix Web前端是用PHP写的需要正确配置PHP的时区否则时间显示会出错。编辑PHP的配置文件为Zabbix提供的特定配置sudo vim /etc/php-fpm.d/zabbix.conf找到php_value[date.timezone]这一行取消注释删除行首的;并将其值设置为Asia/Shanghai如果你在国内。php_value[date.timezone] Asia/Shanghai6. 启动服务与完成Web安装向导所有配置完成后我们启动相关服务并通过浏览器完成最后的安装。6.1 启动所有相关服务并设置自启# 重启PHP-FPM服务使时区配置生效 sudo systemctl restart php-fpm # 启动Zabbix Server和Agent并设置开机自启 sudo systemctl start zabbix-server zabbix-agent sudo systemctl enable zabbix-server zabbix-agent httpd php-fpm # 启动Apache Web服务器 sudo systemctl start httpd使用systemctl status命令检查关键服务的运行状态确保它们都是active (running)。sudo systemctl status zabbix-server sudo systemctl status zabbix-agent sudo systemctl status httpd6.2 通过Web界面完成安装现在打开你的浏览器访问http://你的服务器IP地址/zabbix。你将看到Zabbix的Web安装向导界面。欢迎页面检查所有前提条件是否都是“OK”。通常会有关于PHPpost_max_size和max_execution_time的警告对于初期测试可以暂时忽略点击“Next step”。数据库配置Database type:MySQLDatabase host:localhostDatabase port:3306Database name:zabbixUser:zabbixPassword: 填入你之前设置的密码。点击“Test connection”确保连接成功然后“Next step”。服务器详情Server name: 可以填写你喜欢的名字如“My Zabbix”。Default time zone: 选择Asia/Shanghai。Theme: 选择默认即可。点击“Next step”。安装前总结确认信息无误点击“Next step”。安装完成你会看到“Congratulations! You have successfully installed Zabbix frontend.”的提示。点击“Finish”完成安装。安装完成后页面会自动跳转到Zabbix的登录页面。默认的登录用户名是Admin密码是zabbix。注意大小写首次登录后系统会强制要求你修改密码。7. 首战告捷添加第一台主机并验证监控登录到Zabbix前端后面对一个空空如也的仪表盘你可能会有点茫然。我们的第一个目标就是把Zabbix Server自己监控起来。7.1 配置Zabbix Agent本机我们已经在安装Server时一并安装了Agent。现在需要配置Agent让它允许Server来拉取数据。编辑Agent的配置文件sudo vim /etc/zabbix/zabbix_agentd.conf修改以下几个核心参数Server127.0.0.1 # 允许哪个Zabbix Server来连接本机 ServerActive127.0.0.1 # 主动模式上报的目标Server地址本机 HostnameZabbix server # 重要这个名称必须与Web界面中添加的主机名完全一致保存后重启Agent服务sudo systemctl restart zabbix-agent7.2 在Web界面中添加主机在Zabbix Web界面点击左侧导航栏的“配置” - “主机”。点击右上角的“创建主机”。“主机”标签页主机名称填写Zabbix server必须与Agent配置文件中的Hostname一致。可见的主机名自动填充可以一样。群组点击“选择”添加一个群组比如“Linux servers”或“Zabbix servers”方便管理。“模板”标签页这是关键点击“选择”搜索并添加模板Template OS Linux by Zabbix agent。这个模板包含了监控Linux系统CPU、内存、磁盘、网络等的所有监控项、触发器和图形。“加密”标签页如果是在可信的内网可以暂时不配置。点击页面底部的“添加”。添加成功后回到主机列表。稍等一两分钟你会在“可用性”列的“ZBX”图标处看到一个绿色的标记这表示Zabbix Server已经成功连接并开始从这台主机的Agent收集数据了。7.3 查看监控数据与图形点击左侧导航栏的“监测中” - “最新数据”。在过滤器中选择主机为Zabbix server然后点击“应用”。你会看到一长串监控项列表比如“system.cpu.load[percpu,avg1]”表示CPU负载。如果“最后检查”时间是最新的并且“值”有数据说明监控已经在正常运行了。点击左侧“监测中” - “主机”点击主机名“Zabbix server”再点击顶部的“图形”标签选择如“CPU utilization”等图形就能看到可视化的监控图表了。至此你已经成功部署了一个功能完整的Zabbix监控系统并完成了对第一台主机它自己的基础监控。这个系统已经具备了扩展的能力你可以用同样的Agent配置方式将更多的服务器、网络设备甚至应用程序纳入监控范围。