环境说明

新到了一台装了 Ubuntu 24.04 的机器,需要搭个 Zabbix 8.0 。用的 MySQL 8.0.45 做数据库,整个过程踩了不少坑,记录一下方便以后翻看。


安装流程

添加官方源

Ubuntu 自带源里的 Zabbix 版本太老,直接去官方拉最新的仓库包:

wget https://repo.zabbix.com/zabbix/8.0/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_8.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_8.0+ubuntu24.04_all.deb
sudo apt update

安装组件

一条命令把服务端、前端、数据库、Agent 全装上:

sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mysql-server

配置数据库

先登进 MySQL:

sudo mysql -u root

建库、建用户、授权,三步走:

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
QUIT;

导入初始数据

sudo zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

改配置文件

编辑 /etc/zabbix/zabbix_server.conf,加上这两行:

DBPassword=你的密码
AllowUnsupportedDBVersions=1

第二行后面会讲到为什么需要,第二行配置文件搞了我很久。

修复语言环境

sudo apt install -y locales
sudo locale-gen en_US.UTF-8

启动服务

sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2

网页初始化

浏览器打开 http://你的服务器IP/zabbix,跟着向导填:

  • 数据库类型选 MySQL
  • 主机填 localhost
  • 库名 zabbix,用户名 zabbix,密码填你设的那个
  • 时区选 Asia/Shanghai

完成后用 Admin / zabbix 登录就行。


踩过的坑

坑一:数据文件路径不对

照着网上教程写的路径 /usr/share/zabbix-sql-scripts/mysql/server.sql.gz,结果报文件不存在。用 find /usr/share -name "server.sql.gz" 搜了一下才发现 8.0 版本路径变了,实际在 /usr/share/zabbix/sql-scripts/mysql/server.sql.gz,中间少了一层目录。

坑二:数据库权限报错

导入数据时报这个:

ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled...

MySQL 开了 binlog,zabbix 用户没有 SUPER 权限,没法创建存储过程。先登录 root 执行一下 SET GLOBAL log_bin_trust_function_creators = 1; 临时放开限制,再重新导入就好了。

坑三:配置文件变量名大小写

grep "DBpassword" 查配置啥也没找到,折腾半天发现是大小写问题,变量名是 DBPassword(P 大写)。Linux 下这种大小写敏感的地方挺多的,习惯了就好。

坑四:MySQL 版本不被支持

服务死活起不来,日志里写着:

Unable to start Zabbix server due to unsupported MySQL database version (8.00.45).
Must be at least (8.04.00).

Ubuntu 24.04 自带的 MySQL 8.0.45 版本太新,Zabbix 8.0 的白名单里还没有它。其实数据库完全兼容,只是校验逻辑没跟上。解决方法是配置文件里加一行 AllowUnsupportedDBVersions=1,跳过版本检查就好。当然这行得自己承担风险,不过单机用完全没问题。

坑五:语言环境检测不通过

网页安装那步卡在系统语言检查,en_US 那项是红色的。因为系统缺了英文语言包,装上 locales 并生成 en_US.UTF-8,重启 Apache 和 Zabbix Server 就过了。

坑六:数据没完全导进去

前面权限问题导致导入中断,虽然部分表已经建了但 users 表是空的,启动时直接报:

cannot use database "zabbix": its "users" table is empty

干脆删库重建,重新完整导入一遍,最后 SHOW TABLES 出来 211 张表就对了。


顺手学到的几个知识点

  • mysql -p 跟密码时中间不能有空格,建议直接回车然后交互式输入,更安全
  • sed -i 是原地改文件,加 .bak 后缀可以自动备份原文件
  • sed 分隔符不一定是 /,遇到 URL 这种含斜杠的内容时用 s#原内容#新内容# 更方便
  • AllowUnsupportedDBVersions=1 可以跳过数据库版本校验,适合用较新数据库版本的情况
  • Zabbix 前端需要 en_US.UTF-8 语言包,最小化安装的系统可能要手动装

验证是否跑起来了

# 三个服务都看看状态
sudo systemctl status zabbix-server zabbix-agent apache2

# 翻翻日志有没有报错
sudo tail -20 /var/log/zabbix/zabbix_server.log

然后浏览器访问页面,用默认账号登进去,去"数据采集 -> 主机"里瞅一眼

本机那个 ZBX 图标变绿就说明整套东西跑通了。