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 && bash
2.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 3
2.4 系统时间同步(监控系统必须)
复制代码
dnf install -y chrony
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai

# 验证时间同步状态
chronyc tracking
timedatectl status
2.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 makecache

2. 安装 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 mariadb
3.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 mariadb
3.3 初始化数据库与用户
  1. 登录 MariaDB(初始无密码,直接回车登录)

    复制代码
    mysql -uroot
  2. 修改 root 用户密码(安全加固,非必须但强烈建议)

    复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的数据库root密码';
    FLUSH PRIVILEGES;
  3. 创建 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;
  4. 导入 Zabbix 初始化数据

    复制代码
    # 导入SQL脚本,输入上一步设置的Zabbix数据库密码
    zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
      mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
  5. 恢复数据库安全配置

    复制代码
    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 -t
5.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,按向导完成初始化配置:

  1. 检查 PHP 环境依赖(确保所有项显示OK
  2. 配置数据库连接信息(与zabbix_server.conf中配置一致)
  3. 设置 Zabbix 服务端名称与时区(选择Asia/Shanghai
  4. 完成安装,生成配置文件(若提示权限问题,手动创建/etc/zabbix/web/zabbix.conf.php

2. 登录 Web 端

  • 默认用户名:Admin(首字母大写)
  • 默认密码:zabbix

3. 配置中文界面(解决乱码问题)

3.1 安装中文语言包
复制代码
# 查找系统镜像中的中文包(若已挂载RHEL镜像)
find /mnt -name "zh_CN"

# 安装中文语言包
dnf install -y langpacks-zh_CN
3.2 切换界面语言

登录后进入:User settings → Profile → Language,选择Chinese(zh_CN),点击Update

3.3 解决中文乱码

Zabbix 默认字体不支持中文,需替换为中文字体:

  1. 上传中文字体文件(如simhei.ttf)到/usr/share/zabbix/assets/fonts/

  2. 修改字体配置文件:

    复制代码
    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');
  3. 刷新页面,中文即可正常显示。


四、关键验证与排错

1. 验证服务日志

复制代码
# 查看Zabbix服务端日志
tail -f /var/log/zabbix/zabbix_server.log

# 查看Nginx错误日志
tail -f /var/log/nginx/error.log

2. 常见问题排查

  • 问题 1:数据库连接失败 检查zabbix_server.conf中的DBPassword是否与数据库中设置的一致,确认localhost连接权限。
  • 问题 2:Web 前端时区报错 检查/etc/php.ini中的date.timezone是否设置为Asia/Shanghai,重启php-fpm服务。
  • 问题 3:中文乱码 确认已替换中文字体并修改defines.inc.php配置,清除浏览器缓存后刷新。

五、安全加固建议

  1. 修改默认 Admin 用户密码,设置强密码

  2. 禁用数据库远程访问(已配置bind-address=127.0.0.1

  3. 限制 Zabbix 前端访问 IP(修改 Nginx 配置添加allow规则)

  4. 定期备份 Zabbix 数据库:

    复制代码
    mysqldump -uroot -p zabbix > /backup/zabbix_$(date +%Y%m%d).sql

结果展示:

相关推荐
叠叠乐1 小时前
红米redmi k90 pro max alsc 冠军版刷TWRP
linux
狼与自由1 小时前
mysql到clickhouse
数据库·mysql·clickhouse
六月雨滴1 小时前
Oracle 数据库之归档日志
数据库·oracle·dba
土狗TuGou1 小时前
SQL内功笔记 · 第6篇:窗口函数的使用ROW_NUMBER等
java·数据库·后端·sql·mysql
JackSparrow4141 小时前
使用Ansible批量管理+更新产品环境服务器配置
运维·服务器·ci/cd·kubernetes·自动化·ansible·sre
oioihoii1 小时前
CentOS 7单机部署Elasticsearch:这些坑和关键配置,生产环境踩过才知道
linux·elasticsearch·centos
川石课堂软件测试1 小时前
使用mock进行接口测试教程
数据库·python·功能测试·测试工具·华为·单元测试·appium
大明者省2 小时前
windows server2019服务器部署图文版
运维·服务器
Solis程序员2 小时前
MongoDB 超全入门到实战:从原理、CRUD到高可用架构
数据库·mongodb·架构