本文基于Rocky Linux 9系统,采用 Docker Compose 容器化部署 Zabbix 7.0 + Grafana,全程标注【需自定义密码】 位置,其余命令直接复制执行即可,同时解决部署中常见的镜像拉取、数据库连接、SSL 报错等问题,附带邮件告警配置、Windows/Linux Agent 监控、Grafana 可视化集成,满足生产级基础监控需求。过程踩了一些坑,整理后记录下来方便后期需要可以直接照抄部署。一、前期准备:虚拟机配置 + 系统安装
1. 生产级最低硬件配置(按监控规模调整)
2. 虚拟机配置细节(VMware/ESXi)
- 系统版本:选择
Linux → Red Hat Enterprise Linux 9 64位(Rocky Linux 9 兼容) - 磁盘配置:控制器类型
SCSI → VMware Paravirtual,磁盘模式独立 → 持久,单独划分/data分区(≥20GB)用于 Zabbix 数据持久化 - 网络配置:网卡
VMXNET3,配置静态 IP(避免 DHCP 导致服务异常) - 其他:启用硬件虚拟化,禁用 USB、声卡等无用设备节省资源
3. Rocky Linux 9 系统安装(关键分区 + SSH 开启)
- 下载镜像:阿里云 Rocky Linux 9.7 Minimal 镜像(Rocky-9.7-x86_64-minimal.iso)
- 挂载镜像启动,选择
Install Rocky Linux 9, - 手动分区
- swap:4GB(内存≤8GB 设为 1 倍,>8GB 设 8GB)
- /data:剩余全部空间(xfs 格式,Zabbix 数据专用)
- 网络和主机名:开启网卡 + 配置静态 IP,主机名自定义设
zabbix-server - 设置 ROOT 强密码,务必开启 SSH(若安装时未勾选,后续按步骤配置)
4. 补配 SSH(允许 root 远程登录)
若安装时未开启 SSH,登录系统后执行以下命令:
# 找到行:#PermitRootLogin prohibit-password,按 i键进入编辑模式,删除行首的 #(取消注释)修改为:PermitRootLogin yes systemctl restart sshd # 重启SSH服务 systemctl status sshd # 检查状态(显示active即成功)配置完成后,可通过 SSH 客户端远程操作服务器,后续命令均在终端执行。二、系统前置准备(解决依赖 + 关闭防护)
复制一条执行一条,等待执行完成再下一条,注释仅说明作用,无需复制:
sudo dnf update -y # 更新系统软件包,避免后续安装冲突 sudo dnf install -y curl policycoreutils-python-utils # 安装必要依赖工具 sudo systemctl stop firewalld # 停止防火墙(新手直接关闭,避免端口拦截) sudo systemctl disable firewalld # 禁止防火墙开机自启 SELINUX sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # 永久关闭SELINUX三、安装 Docker + Docker Compose(阿里云源,解决官方源连接失败)
步骤 1:清理原有 Docker 源,添加阿里云镜像源
# 清理旧源
sudo rm -f /etc/yum.repos.d/docker-ce.repo sudo tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'name=Docker CE Stable - $basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/stablegpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg sudo dnf clean all && sudo dnf makecache # 清理缓存并重建 sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl start docker # 启动Docker sudo systemctl enable docker # 开机自启 docker --version # 验证安装(输出版本即成功)步骤 3:配置 Docker 用户组(避免每次输 sudo)sudo usermod -aG docker $USERdocker compose version # 验证Compose安装mkdir -p ~/zabbix-grafana/{zabbix-db,zabbix-server,zabbix-web,grafana} chmod -R 777 ~/zabbix-grafana/ # 设置全权限,避免容器读写报错cd ~/zabbix-grafana # 进入项目目录,后续所有操作均在此目录执行执行后终端路径变为~/zabbix-grafana,继续下一步。五、创建 docker-compose.yml(核心配置,仅改 4 处密码)
一次性复制全部命令粘贴到终端执行,仅修改标注【需自定义密码】的 4 处,其余固定不变,MySQL 相关 2 处密码必须一致,Grafana 密码单独设置,记好修改后的密码!
cat > docker-compose.yml << EOFcontainer_name: zabbix-dbMYSQL_PASSWORD: Zabbix@123456 # 【需自定义密码】Zabbix数据库用户密码MYSQL_ROOT_PASSWORD: Root@123456 # 【需自定义密码】MySQL root密MYSQL_INITDB_SKIP_TZINFO: "1"MYSQL_CHARACTER_SET_SERVER: utf8mb4MYSQL_COLLATION_SERVER: utf8mb4_bin- --default-authentication-plugin=mysql_native_password- --sql-mode=NO_ENGINE_SUBSTITUTION- --character-set-server=utf8mb4- --collation-server=utf8mb4_bin- ./zabbix-db:/var/lib/mysqltest: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]image: zabbix/zabbix-server-mysql:alpine-7.0-latestcontainer_name: zabbix-serverDB_SERVER_HOST: "zabbix-db"MYSQL_PASSWORD: Zabbix@123456 # 【需自定义密码】与上面MYSQL_PASSWORD一致MYSQL_ROOT_PASSWORD: Root@123456 # 【需自定义密码】与上面MYSQL_ROOT_PASSWORD一致condition: service_healthy- ./zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts- ./zabbix-server/externalscripts:/usr/lib/zabbix/externalscriptsimage: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest container_name: zabbix-webDB_SERVER_HOST: "zabbix-db"MYSQL_PASSWORD: Zabbix@123456 # 【需自定义密码】与上面MYSQL_PASSWORD一致ZBX_SERVER_HOST: "zabbix-server"- ./zabbix-web:/etc/zabbix/webimage: grafana/grafana:latestGF_SECURITY_ADMIN_PASSWORD: Grafana@123456 # 【需自定义密码】Grafana管理员密码GF_USERS_ALLOW_SIGN_UP: "false"GF_TIMEZONE: "Asia/Shanghai"- ./grafana:/var/lib/grafana步骤 1:配置 Docker 镜像源(解决官方源超时)
若直接启动提示镜像拉取失败,先配置国内镜像源:
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null || truesudo tee /etc/docker/daemon.json <<-'EOF'"https://docker.1ms.run","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn""log-driver": "json-file",sudo systemctl restart dockerdocker info | grep -A 3 "Registry Mirrors" # 显示镜像源即成功docker pull zabbix/zabbix-server-mysql:alpine-7.0-latestdocker pull zabbix/zabbix-web-nginx-mysql:alpine-7.0-latestdocker pull grafana/grafana:latestdocker images # 检查镜像(4个镜像均存在即成功)docker compose up -d # 查看容器状态(所有容器STATUS为Up即成功) docker compose ps # 检查端口监听(8080/3000/10051端口均LISTEN即成功)ss -tlnp | grep -E ":(8080|3000|10051)"常见排错:Zabbix Web 无法访问(SSL + 配置文件缺失)若访问 Web 界面报错,按以下步骤重建容器 + 手动创建配置文件:# 重建Web容器(禁用SSL,替换<你的数据库密码>为自定义密码)--link zabbix-db:zabbix-db \--link zabbix-server:zabbix-server \--network zabbix-grafana_default \-e PHP_TZ="Asia/Shanghai" \-e MYSQL_PASSWORD="<你的数据库密码>" \-e MYSQL_DATABASE="zabbix" \-e DB_SERVER_HOST="zabbix-db" \-e DB_SERVER_PORT="3306" \-e ZBX_SERVER_HOST="zabbix-server" \-e DB_SERVER_SSL="false" \zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest# 手动创建Zabbix配置文件(替换<你的数据库密码>)docker exec -it zabbix-web shmkdir -p /usr/share/zabbix/confcat > /usr/share/zabbix/conf/zabbix.conf.php << 'EOF'$DB['SERVER'] = 'zabbix-db';$DB['DATABASE'] = 'zabbix';$DB['PASSWORD'] = '<你的数据库密码>';$DB['ENCRYPTION'] = false;$DB['VERIFY_HOST'] = false;$ZBX_SERVER = 'zabbix-server';$ZBX_SERVER_PORT = '10051';$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;docker restart zabbix-web # 重启Web容器curl -I http://localhost:8080 # 测试(返回HTTP/1.1 200即正常)七、访问 Zabbix + Grafana(默认账号密码,必改默认密码)将<服务器IP>替换为你的虚拟机 / 服务器静态 IP,在浏览器中访问:
1. Zabbix Web 界面
- 默认登录信息:用户名
Admin,密码zabbix(不是自定义密码,登录后立即修改!) - 首次登录:进入「用户设置」→「Profile」,将语言改为
Chinese (zh_CN),点击「Change password」修改默认密码(记好新密码,Grafana 集成时需要)
2. Grafana 界面
- :用户名
admin,密码为第四步自定义的 Grafana 密码 - 首次登录:可直接点击
Skip跳过密码修改,或按需修改并记好。
八、Zabbix 核心配置:邮件告警(SMTP)+ Agent 监控
1. 配置邮件告警(以 163/QQ 邮箱为例)
实现监控异常时自动发送邮件通知,步骤如下:
- 进入 Zabbix Web →「告警」→「媒介类型」→ 点击「Email」
- 勾选「已启用」,配置 SMTP 参数(按邮箱类型选择,以下为通用配置):
- 点击「测试」,输入收件邮箱,收到测试邮件即配置成功;
- 关联告警到管理员:「用户」→ 选择
Admin →「报警媒介」→「添加」,类型选Email,填写收件邮箱,触发时间选1-7,00:00-24:00,保存并更新; - 启用告警动作:「告警」→「动作」→「触发器动作」,启用默认的
Report problems to Zabbix administrators,确认「操作」和「恢复操作」均配置为发送到Zabbix administrators用户组。
2. 安装 Agent 监控 Windows/Linux 服务器
Windows 服务器(Agent 7.0)
- 下载地址:Zabbix Windows Agent 7.0
- 双击安装,填写Zabbix Server IP和主机名(务必唯一);
- 安装完成后,在「服务」中启动
Zabbix Agent,设置为「自动」启动; - Zabbix Web 添加主机:「配置」→「主机」→「创建主机」,主机名与 Agent 配置一致
- 模板选择
Template OS Windows by Zabbix agent,添加 Agent 接口(IP 为 Windows 服务器 IP,端口 10050),启用主机。
Linux 服务器
直接通过命令安装 Agent,模板选择Template OS Linux by Zabbix agent,监控服务器本身则额外关联Template Zabbix Server。
关联对应模板:
·Linux 服务器:关联Template OS Linux by Zabbix agent;
·Windows 服务器:关联Template OS Windows by Zabbix agent;
·监控服务器本身:关联Template OS Linux by Zabbix agent+Template Zabbix Server;
九、Grafana 集成 Zabbix(可视化监控数据,一步到位)
实现 Grafana 拉取 Zabbix 监控数据并可视化,核心为安装插件 + 配置数据源 + 导入仪表盘。
步骤 1:安装 Zabbix 官方插件(终端执行)
# 确保在~/zabbix-grafana目录
cd ~/zabbix-grafana # 进入Grafana容器安装插件
docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app
# 重启Grafana使插件生效
docker restart grafana
# 验证插件安装(显示alexanderzobnin-zabbix-app即成功)
docker exec -it grafana ls /var/lib/grafana/plugins/
步骤 2:配置 Zabbix 数据源(Grafana 浏览器操作)
- 登录 Grafana → 左侧「连接」→「添加新连接」→ 搜索
zabbix,选择对应的 Zabbix 数据源; - URL:
http://zabbix-web:8080/api_jsonrpc.php(容器内访问地址,固定不变) - Username:
Admin(Zabbix 用户名) - Password:Zabbix 登录后修改的新密码(不是默认密码!)
- 拉到页面底部,点击「保存并测试」,提示
Zabbix API version 7.0.24即配置成功。
步骤 3:导入 Zabbix 监控仪表盘(一键可视化)
- 方式 1:通过 Grafana 官网导入,访问Grafana Dashboards,搜索
zabbix,选择适合的仪表盘(数据源为 Zabbix),复制仪表盘 ID,粘贴到 Grafana 导入框,点击「加载」,选择已配置的 Zabbix 数据源,点击「导入」; - 方式 2:导入自定义 JSON 仪表盘(推荐中文版),将 JSON 文件上传到 Grafana,选择 Zabbix 数据源即可。
仪表盘可以通过Grafana网站搜索
1. 打开浏览器访问:https://grafana.com/grafana/dashboards/
2. 在搜索框输入:zabbix
3. 找到适合的仪表盘(注意看数据源类型必须是 Zabbix)
4. 复制仪表盘ID
也可以找网上已知的使用,
最可靠的是手动导入JSON文件,可以找大佬们做好的中文版的
导入成功后,Grafana 将自动显示 Zabbix 的监控数据(CPU、内存、磁盘、网络等),实现可视化监控。
十、最终验证 + 日常运维常用命令
部署成功标志
- Zabbix Web 能正常登录,添加 Agent 后可看到监控数据,邮件告警测试成功;
- Grafana 能正常登录,导入仪表盘后可实时查看 Zabbix 可视化数据;
- 所有容器状态为
Up,8080/3000/10051 端口正常监听。
日常运维常用命令(均在~/zabbix-grafana 目录执行)
docker compose ps # 查看所有容器状态
docker restart zabbix-server # 重启Zabbix Server
docker restart grafana # 重启Grafana
docker logs -f zabbix-server # 实时查看Zabbix Server日志
docker logs -f zabbix-web # 实时查看Zabbix Web日志
docker compose down # 停止所有服务
docker compose up -d # 启动所有服务
docker exec -it grafana grafana-cli plugins list # 查看Grafana已安装插件
总结
本文基于 Rocky Linux 9 实现 Zabbix + Grafana 容器化部署,全程命令可直接复制,仅需修改 4 处自定义密码,同时解决了镜像拉取、SSL 报错、配置文件缺失等新手常见问题,附带邮件告警、Agent 监控、Grafana 可视化全流程,满足中小企业生产级基础监控需求。部署完成后,可根据监控规模调整硬件配置,超过 500 台节点建议拆分 Zabbix Proxy,提升监控稳定性。
温馨提示:所有自定义密码建议设置为「字母 + 数字 + 特殊符号」的强密码,定期备份 Zabbix 数据目录(~/zabbix-grafana),避免数据丢失。