Zabbix监控初步搭建
一、环境准备
1. 基础环境信息
| 项目 | 配置说明 |
|---|---|
| 操作系统 | RHEL 10(或 CentOS Stream 10) |
| 主机名 | zabbix-server |
| IP 地址 | 192.168.24.41/24 |
| 网关 | 192.168.24.2 |
| DNS | 223.5.5.5 |
| 软件版本 | Zabbix 7.0 LTS、MariaDB 10.11、Nginx 1.24、PHP 8.2 |
2. 系统初始化配置
2.1 克隆虚拟机
基于干净的 RHEL 10 模板克隆虚拟机,避免环境依赖冲突。
2.2 设置主机名
hostnamectl set-hostname zabbix-server && bash2.3 配置静态 IP 地址
nmcli connection modify ens160 \ ipv4.method manual \ ipv4.addresses 192.168.24.24/24 \ ipv4.gateway 192.168.24.2 \ ipv4.dns 223.5.5.5 \ connection.autoconnect yes nmcli connection up ens160 # 验证IP配置 ip addr show ens160 ping 192.168.24.2 -c 32.4 系统时间同步(监控系统必须)
dnf install -y chrony systemctl enable --now chronyd timedatectl set-timezone Asia/Shanghai # 验证时间同步状态 chronyc tracking timedatectl status2.5 防火墙配置(RHEL 10 默认启用 firewalld)
# 开放Zabbix前端、Agent通信端口 firewall-cmd --permanent --add-port=8080/tcp # Web前端端口 firewall-cmd --permanent --add-port=10050/tcp # Zabbix Agent端口 firewall-cmd --permanent --add-port=10051/tcp # Zabbix Trapper端口 firewall-cmd --reload # 验证规则生效 firewall-cmd --list-ports二、安装 Zabbix 服务端
1. 配置 Zabbix 官方仓库
官网
下载Zabbix 7.0 LTS for Red Hat Enterprise Linux 10, MySQL, Nginxhttps://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=red_hat_enterprise_linux&os_version=10&components=server_frontend_agent&db=mysql&ws=nginx
1.1 处理 EPEL 源冲突(可选,若已安装 EPEL)
如果系统已配置 EPEL 源,需禁用 EPEL 中的 Zabbix 包,避免版本冲突:
# 编辑EPEL源配置(路径示例:/etc/yum.repos.d/epel.repo) vim /etc/yum.repos.d/epel.repo在[epel]段添加以下内容:
[epel] name=Extra Packages for Enterprise Linux $releasever - $basearch baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever excludepkgs=zabbix* # 禁用EPEL中的Zabbix包1.2 安装 Zabbix 官方仓库
# 安装Zabbix 7.0 LTS仓库(适配RHEL 10) rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm # 刷新仓库缓存 dnf clean all && dnf makecache2. 安装 Zabbix 核心组件
dnf install -y \ zabbix-server-mysql \ # Zabbix服务端(MySQL/MariaDB版) zabbix-web-mysql \ # Web前端(支持MySQL) zabbix-nginx-conf \ # Nginx配置文件 zabbix-sql-scripts \ # 数据库初始化脚本 zabbix-selinux-policy \ # SELinux策略包(RHEL 10必装) zabbix-agent \ # 本地Zabbix Agent nginx \ # Web服务器 php-fpm # PHP运行环境3. 部署 MariaDB 数据库
3.1 安装并启动 MariaDB
dnf install -y mariadb-server systemctl enable --now mariadb # 验证数据库状态 systemctl status mariadb3.2 配置 MariaDB(关键优化)
编辑 MariaDB 主配置文件:
vim /etc/my.cnf.d/mariadb-server.cnf在[mysqld]段添加 / 修改以下配置:
[mysqld] # 基础配置 bind-address=127.0.0.1 # 仅本地监听,安全加固 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 字符集配置(与Zabbix要求一致) character-set-server=utf8mb4 collation-server=utf8mb4_bin # InnoDB优化(适配Zabbix负载) innodb_buffer_pool_size=256M # 建议为内存的50%(根据实际调整) innodb_log_file_size=64M innodb_flush_log_at_trx_commit=2 # 日志配置 log-error=/var/log/mariadb/mariadb.log pid-file=/run/mariadb/mariadb.pid重启数据库使配置生效:
systemctl restart mariadb3.3 初始化数据库与用户
登录 MariaDB(初始无密码,直接回车登录)
mysql -uroot修改 root 用户密码(安全加固,非必须但强烈建议)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的数据库root密码'; FLUSH PRIVILEGES;创建 Zabbix 数据库与专用用户
-- 创建Zabbix数据库(字符集必须为utf8mb4_bin) CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; -- 创建Zabbix数据库用户(仅本地访问) CREATE USER zabbix@localhost IDENTIFIED BY '你的Zabbix数据库密码'; -- 授予用户所有权限 GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost; -- 临时开启函数创建权限(导入数据用) SET GLOBAL log_bin_trust_function_creators = 1; -- 退出数据库 QUIT;导入 Zabbix 初始化数据
# 导入SQL脚本,输入上一步设置的Zabbix数据库密码 zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \ mysql --default-character-set=utf8mb4 -uzabbix -p zabbix恢复数据库安全配置
mysql -uroot -p你的数据库root密码-- 关闭函数创建权限(生产环境必须) SET GLOBAL log_bin_trust_function_creators = 0; QUIT;
4. 配置 Zabbix 服务端
编辑 Zabbix 服务端主配置文件:
vim /etc/zabbix/zabbix_server.conf修改以下关键配置:
# 数据库连接配置 DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=你的Zabbix数据库密码 # 与数据库创建时设置的密码一致 # 日志配置 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=100 # 单个日志文件最大100MB LogFileCount=3 # 保留3个日志文件 # 性能基础配置(可根据服务器规格调整) StartPollers=5 # 轮询器进程数 StartDiscoverers=2 # 自动发现进程数 StartTrappers=5 # 接收器进程数 CacheSize=8M # 配置缓存大小 HistoryCacheSize=16M # 历史数据缓存大小 TrendCacheSize=4M # 趋势数据缓存大小5. 配置 Web 前端环境
5.1 配置 Nginx
编辑 Zabbix 的 Nginx 配置文件:
vim /etc/nginx/conf.d/zabbix.conf修改以下配置:
server { listen 8080; # 监听端口(默认8080,避免与80冲突) server_name zabbix-server; # 修改为你的主机名或IP root /usr/share/zabbix; index index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name; include fastcgi_params; } }验证 Nginx 配置语法:
nginx -t5.2 配置 PHP 时区(关键!否则前端报错)
编辑 PHP 配置文件:
vim /etc/php.ini修改时区配置:
date.timezone = Asia/Shanghai # 必须设置为东八区时间6. 启动所有服务并设置开机自启
# 启动并设置开机自启 systemctl enable --now \ zabbix-server \ zabbix-agent \ nginx \ php-fpm # 验证所有服务状态 systemctl status zabbix-server zabbix-agent nginx php-fpm三、Web 端初始化配置
1. 访问 Zabbix 前端
打开浏览器访问:http://192.168.24.41:8080,按向导完成初始化配置:
- 检查 PHP 环境依赖(确保所有项显示
OK) - 配置数据库连接信息(与
zabbix_server.conf中配置一致) - 设置 Zabbix 服务端名称与时区(选择
Asia/Shanghai) - 完成安装,生成配置文件(若提示权限问题,手动创建
/etc/zabbix/web/zabbix.conf.php)
2. 登录 Web 端
- 默认用户名:
Admin(首字母大写) - 默认密码:
zabbix
3. 配置中文界面(解决乱码问题)
3.1 安装中文语言包
# 查找系统镜像中的中文包(若已挂载RHEL镜像) find /mnt -name "zh_CN" # 安装中文语言包 dnf install -y langpacks-zh_CN3.2 切换界面语言
登录后进入:User settings → Profile → Language,选择Chinese(zh_CN),点击Update。
3.3 解决中文乱码
Zabbix 默认字体不支持中文,需替换为中文字体:
- 上传中文字体文件(如
simhei.ttf)到/usr/share/zabbix/assets/fonts/ - 修改字体配置文件:
将以下配置:vim /usr/share/zabbix/include/defines.inc.php
修改为:define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); define('ZBX_FONT_NAME', 'DejaVuSans');define('ZBX_GRAPH_FONT_NAME', 'simhei'); define('ZBX_FONT_NAME', 'simhei'); - 刷新页面,中文即可正常显示。
四、关键验证与排错
1. 验证服务日志
# 查看Zabbix服务端日志 tail -f /var/log/zabbix/zabbix_server.log # 查看Nginx错误日志 tail -f /var/log/nginx/error.log2. 常见问题排查
- 问题 1:数据库连接失败检查
zabbix_server.conf中的DBPassword是否与数据库中设置的一致,确认localhost连接权限。 - 问题 2:Web 前端时区报错检查
/etc/php.ini中的date.timezone是否设置为Asia/Shanghai,重启php-fpm服务。 - 问题 3:中文乱码确认已替换中文字体并修改
defines.inc.php配置,清除浏览器缓存后刷新。
五、安全加固建议
- 修改默认 Admin 用户密码,设置强密码
- 禁用数据库远程访问(已配置
bind-address=127.0.0.1) - 限制 Zabbix 前端访问 IP(修改 Nginx 配置添加
allow规则) - 定期备份 Zabbix 数据库:
mysqldump -uroot -p zabbix > /backup/zabbix_$(date +%Y%m%d).sql
结果展示:
