概述
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。
Zabbix 是一个企业级的开源分布式监控解决方案。
Zabbix 是一款监控众多参数的网络以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用。
Zabbix 是免费的。Zabbix 是AGPL-3.0许可证下编写和分发的。这意味着它的源代码是免费分发的,可供公众使用。
安装准备
关闭防火墙
systemctl stop ufw.service
systemctl disable ufw.service
关闭selinux
SELINUX=disabled
ZABBIX官方教程
Zabbix 安装部署
系统要求
- 操作系统:Ubuntu 24.04
- 数据库:MySQL
- Zabbix 版本:7.4
安装步骤
1. 切换到 root 用户
sudo -s
2. 安装 Zabbix 仓库
wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.4+ubuntu24.04_all.deb
apt update
3. 安装 Zabbix 组件
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
4. 数据库配置
安装mariadb数据库
apt install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Enter current password for root (enter for none): # 当前root还没有密码,直接回车即可
Set root password? [Y/n] y # 是否要设置root密码,y
New password: # 1qaz2wsx(可自定义)
Re-enter new password: # 再次确认一遍密码
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y # 当前有个anonymous用户,是否移除 y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n # 不允许root远程登录, n
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y # 是否移除test数据库 y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y # 是否重载权限表 y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB! # 配置完成
创建数据库和用户
mysql -uroot -p
# 输入mariadb数据库root密码
在 MySQL 中执行:
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password'; # zabbix数据库密码 密码自定义
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
导入初始数据
zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
# 输入数据库密码
禁用函数创建器选项
mysql -uroot -p
在 MySQL 中执行:
set global log_bin_trust_function_creators = 0;
quit;
5. 配置 Zabbix Server
编辑配置文件:
vi /etc/zabbix/zabbix_server.conf
修改数据库密码:
DBPassword=password
6. 启动服务
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
7. 访问 Zabbix Web 界面
在浏览器中访问:
http://your-server-ip/zabbix
初始 Web 界面配置步骤
-
欢迎页面
- 检查所有前提条件是否满足
- 点击 "Next step"
-
数据库配置
- Database type: MySQL
- Database host: localhost
- Database port: 3306
- Database name: zabbix
- User: zabbix
- Password: password
-
服务器详情
- Server name: Zabbix server
- Default timezone: 选择您的时区
-
安装前检查
- 确认所有检查都通过
-
完成安装
- 下载配置文件(可选)
- 点击 "Finish"
-
登录
- 默认用户名:Admin
- 默认密码:zabbix
安全建议
-
修改默认密码
- 首次登录后立即修改 Admin 用户密码
-
防火墙配置
# 开放 Zabbix 相关端口 ufw allow 80/tcp # Apache ufw allow 10050/tcp # Zabbix Agent ufw allow 10051/tcp # Zabbix Server -
SSL/TLS 配置
- 考虑为 Apache 配置 SSL 证书
故障排除
常见问题
-
数据库连接失败
- 检查
/etc/zabbix/zabbix_server.conf中的数据库配置 - 验证 MySQL 服务是否运行
- 检查
-
Web 界面无法访问
- 检查 Apache 服务状态:
systemctl status apache2 - 检查防火墙设置
- 检查 Apache 服务状态:
-
Zabbix Server 启动失败
- 查看日志:
tail -f /var/log/zabbix/zabbix_server.log
- 查看日志:
服务管理命令
# 查看服务状态
systemctl status zabbix-server
systemctl status zabbix-agent
systemctl status apache2
# 重启服务
systemctl restart zabbix-server
# 查看日志
journalctl -u zabbix-server -f
文件位置说明
- 配置文件:
/etc/zabbix/ - 日志文件:
/var/log/zabbix/ - Web 文件:
/usr/share/zabbix/ - Agent 配置:
/etc/zabbix/zabbix_agentd.conf
Zabbix 数据库备份与恢复操作指南
数据库备份操作
物理备份方法(推荐)
# 1. 停止 Zabbix Server 服务
sudo systemctl stop zabbix-server
# 2. 停止数据库服务
sudo systemctl stop mariadb
# 3. 创建备份目录
sudo mkdir -p /backup/mysql_backup
# 4. 备份数据库文件
sudo cp -r /var/lib/mysql/* /backup/mysql_backup/
# 5. 重启数据库服务
sudo systemctl start mariadb
# 6. 重启 Zabbix Server
sudo systemctl start zabbix-server
逻辑备份方法(使用 mysqldump)
# 备份 Zabbix 数据库
sudo mysqldump -u zabbix -p --databases zabbix > /backup/zabbix_backup_$(date +%Y%m%d).sql
# 备份所有数据库
sudo mysqldump -u root -p --all-databases > /backup/full_mysql_backup_$(date +%Y%m%d).sql
zabbix数据库恢复操作
物理恢复方法
# 第一步:关闭数据库服务
sudo systemctl stop mariadb
# 第二步:清空原有数据库文件
sudo rm -rf /var/lib/mysql/*
# 第三步:恢复备份文件
sudo cp -r /backup/mysql_backup/* /var/lib/mysql
# 第四步:修改文件权限
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 755 /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql/
sudo chmod 660 /var/lib/mysql/ibdata1
sudo chmod 660 /var/lib/mysql/ib_logfile*
sudo chmod 660 /var/lib/mysql/*.err
# 第五步:启动数据库服务
sudo systemctl start mariadb
逻辑恢复方法
# 恢复 Zabbix 数据库
sudo mysql -u zabbix -p < /backup/zabbix_backup_$(date +%Y%m%d).sql
# 或者进入 MySQL 命令行执行
mysql> source /backup/zabbix_backup_$(date +%Y%m%d).sql;
恢复后配置更新
更新 Zabbix Server 配置
# 编辑 Zabbix Server 配置文件
sudo vi /etc/zabbix/zabbix_server.conf
# 确保以下配置正确
DBPassword=你的数据库密码
更新 Zabbix Web 前端配置
# 编辑 Web 配置文件
sudo vi /etc/zabbix/web/zabbix.conf.php
# 更新数据库密码
$DB['PASSWORD'] = '你的数据库密码';
重启相关服务
# 重启 Zabbix Server
sudo systemctl restart zabbix-server
# 重启 Web 服务器(根据实际使用的服务器选择)
sudo systemctl restart apache2 # Apache
# 或
sudo systemctl restart nginx # Nginx
# 重启 PHP-FPM(如果使用)
sudo systemctl restart php7.4-fpm
# 或
sudo systemctl restart php8.0-fpm
验证恢复结果
检查数据库状态
# 检查数据库服务状态
sudo systemctl status mariadb
# 检查 Zabbix Server 状态
sudo systemctl status zabbix-server
# 登录 MySQL 检查数据库
mysql -u zabbix -p -e "SHOW DATABASES;"
mysql -u zabbix -p -e "USE zabbix; SHOW TABLES;"
检查 Zabbix 前端
- 通过浏览器访问 Zabbix Web 界面
- 检查监控数据是否正常显示
- 验证最新数据是否正常采集
重要注意事项
- 备份前确保停止服务:避免数据不一致
- 定期测试恢复流程:确保备份文件可用
- 保留多个备份版本:防止单点故障
- 监控备份任务:确保备份正常执行
- 异地备份:重要数据建议进行异地备份
故障排除
常见问题解决
# 如果恢复后数据库无法启动
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# 检查数据库日志
sudo tail -f /var/log/mysql/mariadb.log
# 检查 Zabbix Server 日志
sudo tail -f /var/log/zabbix/zabbix_server.log