APT 安装方式(适合生产环境)Zabbix 6.4 LTS
一、准备环境
bash
sudo apt update -y
sudo apt upgrade -y
sudo timedatectl set-timezone Asia/Shanghai
安装常用工具:
bash
sudo apt install -y wget curl gnupg lsb-release software-properties-common
二、安装 Zabbix 仓库
bash
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-4+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_6.4-4+ubuntu24.04_all.deb
sudo apt update
三、安装 Zabbix Server + Web + Agent
这里以 MySQL + Nginx + PHP-FPM 为例:
bash
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent mysql-server
四、配置数据库
- 登录 MySQL:
bash
sudo mysql -uroot
- 创建数据库和用户:
sql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpass';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- 导入初始数据:
bash
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pzabbixpass --default-character-set=utf8mb zabbix
mysql -ure -p -h [ip] -P 3306 --default-character-set=utf8mb4 zabbix < server.sql
五、配置 Zabbix Server
编辑配置文件:
bash
sudo nano /etc/zabbix/zabbix_server.conf
找到并修改:
DBPassword=zabbixpass
六、配置 Nginx
编辑:
bash
sudo nano /etc/zabbix/nginx.conf
修改监听端口和 server_name,比如:
listen 8080;
server_name zabbix.example.com;
七、启动服务
bash
sudo systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm
八、访问 Web 界面
浏览器访问:
http://<你的服务器IP>:8080
进入 Zabbix 安装向导,默认账号密码:
用户名:Admin
密码:zabbix
九、语言包配置
检查本地语言包:
bash
locale -a
安装所需的语言环境:
bash
# Debian/Ubuntu
## 安装语言包
sudo apt update
sudo apt install language-pack-zh-hans language-pack-zh-hans-base
## 生成语言环境
sudo locale-gen zh_CN.UTF-8
sudo update-locale
# CentOS/RHEL
## 安装语言包
sudo yum install glibc-common zh_CN.UTF-8
## 设置语言环境
sudo localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
配置系统默认语言环境(可选):
编辑 /etc/default/locale(Debian/Ubuntu)或 /etc/locale.conf(CentOS/RHEL)文件。
text
# 设置为中文
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
# 使更改生效
source /etc/default/locale # Debian/Ubuntu
source /etc/locale.conf # CentOS/RHEL
重启 Web 服务器:
bash
# Apache
sudo systemctl restart apache2
# Nginx
sudo systemctl restart nginx
Docker Compose 部署 Zabbix 6.4 (LTS)
这种方式比在系统上直接装包更方便,升级和迁移也容易。
一、准备环境
在 Ubuntu 24.04 上安装 Docker & Compose:
bash
sudo apt update -y
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
二、创建目录
bash
mkdir -p ~/zabbix-docker
cd ~/zabbix-docker
三、编写 docker-compose.yml
zabbix-docker/docker-compose.yml
yaml
version: '3.5'
services:
mysql:
image: mysql:8.0
container_name: zabbix-mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./mysql_data:/var/lib/mysql
restart: unless-stopped
zabbix-server:
image: zabbix/zabbix-server-mysql:6.4-ubuntu-latest
container_name: zabbix-server
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ports:
- "10051:10051"
depends_on:
- mysql
restart: unless-stopped
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:6.4-ubuntu-latest
container_name: zabbix-web
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
ports:
- "8080:8080"
depends_on:
- zabbix-server
restart: unless-stopped
zabbix-agent:
image: zabbix/zabbix-agent:6.4-ubuntu-latest
container_name: zabbix-agent
environment:
ZBX_SERVER_HOST: zabbix-server
ports:
- "10050:10050"
restart: unless-stopped
四、启动服务
bash
docker-compose up -d
查看容器状态:
bash
docker ps
五、访问 Zabbix Web
浏览器访问:
http://<你的服务器IP>:8080
默认账号:
用户名:admin
密码:zabbix
六、数据持久化
- MySQL 数据会保存在
~/zabbix-docker/mysql_data - 如果要升级,只需更新镜像后
docker-compose pull && docker-compose up -d即可。
Zabbix 6.4 多机分布式部署(Server + Proxy + Agent)
┌──────────────┐
│ Zabbix │
│ Server │
└───────┬──────┘
│
┌─────────┴──────────┐
│ │
┌───────┴───────┐ ┌───────┴───────┐
│ Zabbix Proxy │ │ Zabbix Proxy│ ← 分布在不同机房/区域
└───────┬───────┘ └───────┬───────┘
│ │
┌─────┴─────┐ ┌────┴─────┐
│ Agents │ │ Agents │
└───────────┘ └──────────┘
一、Zabbix Server 节点
服务器 A 部署 Server + Web + DB 。
server-compose.yml
yaml
version: '3.5'
services:
mysql:
image: mysql:8.0
container_name: zabbix-mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./mysql_data:/var/lib/mysql
restart: unless-stopped
zabbix-server:
image: zabbix/zabbix-server-mysql:6.4-ubuntu-latest
container_name: zabbix-server
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ports:
- "10051:10051" # Proxy 会连这个端口
depends_on:
- mysql
restart: unless-stopped
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:6.4-ubuntu-latest
container_name: zabbix-web
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
ports:
- "8080:8080"
depends_on:
- zabbix-server
restart: unless-stopped
启动:
bash
docker-compose -f server-compose.yml up -d
二、Zabbix Proxy 节点
每个 Proxy 部署在不同物理机/区域,用于收集监控数据并转发到 Server。
例如:服务器 B。
proxy-compose.yml
yaml
version: '3.5'
services:
proxy-mysql:
image: mysql:8.0
container_name: zabbix-proxy-mysql
environment:
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./proxy_mysql_data:/var/lib/mysql
restart: unless-stopped
zabbix-proxy:
image: zabbix/zabbix-proxy-mysql:6.4-ubuntu-latest
container_name: zabbix-proxy
environment:
DB_SERVER_HOST: proxy-mysql
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_HOSTNAME: proxy-b # Proxy 名称,需要和 Web 界面配置一致
ZBX_SERVER_HOST: <server_ip> # Server 节点的 IP
ports:
- "10052:10051" # Proxy 本地监听
depends_on:
- proxy-mysql
restart: unless-stopped
启动:
bash
docker-compose -f proxy-compose.yml up -d
⚠️ 注意:
ZBX_HOSTNAME必须和你在 Zabbix Web 界面添加 Proxy 时的名字一致。ZBX_SERVER_HOST指向 Server 节点的 IP 或域名。
三、Zabbix Agent 节点
每台需要监控的服务器运行 Agent。
例如服务器 C(业务主机)。
agent-compose.yml:
yaml
version: '3.5'
services:
zabbix-agent:
image: zabbix/zabbix-agent:6.4-ubuntu-latest
container_name: zabbix-agent
environment:
ZBX_HOSTNAME: agent-c
ZBX_SERVER_HOST: <proxy_ip> # 这里填 Proxy 的 IP,而不是直接 Server
ports:
- "10050:10050"
restart: unless-stopped
启动:
bash
docker-compose -f agent-compose.yml up -d
四、Web 界面配置
-
登录 Zabbix Web(Server 节点
http://server_ip:8080)。 -
在 Administration → Proxies 添加 Proxy:
- Proxy name:要和
ZBX_HOSTNAME一致,比如proxy-b - Mode:Active(推荐)
- Proxy name:要和
-
在 Configuration → Hosts 中,把 Agent 所属主机的
Monitored by proxy设置为对应 Proxy。
✅ 这样就能实现:
- Server:统一存储和展示数据
- Proxy:分布式采集,减少跨区域压力
- Agent:安装在被监控主机上
docker-compose 配置里统一管理多个 Proxy
这可以通过 主 docker-compose.yml + 一个 docker-compose.override.yml 来实现,Override 文件里定义多个 Proxy。
📂 目录结构
bash
zabbix-docker/
├── docker-compose.yml # 主配置(Server + Web + DB)
├── docker-compose.override.yml # 扩展 Proxy 集群
└── mysql_data/ # Server DB 数据
🖥 主配置:docker-compose.yml
(部署 Server + Web)
docker-compose.yml
yaml
version: '3.5'
services:
mysql:
image: mysql:8.0
container_name: zabbix-mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./mysql_data:/var/lib/mysql
restart: unless-stopped
zabbix-server:
image: zabbix/zabbix-server-mysql:6.4-ubuntu-latest
container_name: zabbix-server
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ports:
- "10051:10051"
depends_on:
- mysql
restart: unless-stopped
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:6.4-ubuntu-latest
container_name: zabbix-web
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
ports:
- "8080:8080"
depends_on:
- zabbix-server
restart: unless-stopped
📡 Override 配置:docker-compose.override.yml
(定义多个 Proxy,每个 Proxy 带独立 MySQL)
docker-compose.override.yml
yaml
version: '3.5'
services:
# Proxy A
proxy-a-mysql:
image: mysql:8.0
container_name: proxy-a-mysql
environment:
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./proxy-a-mysql-data:/var/lib/mysql
restart: unless-stopped
proxy-a:
image: zabbix/zabbix-proxy-mysql:6.4-ubuntu-latest
container_name: proxy-a
environment:
DB_SERVER_HOST: proxy-a-mysql
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_HOSTNAME: proxy-a
ZBX_SERVER_HOST: zabbix-server
ports:
- "10052:10051"
depends_on:
- proxy-a-mysql
restart: unless-stopped
# Proxy B
proxy-b-mysql:
image: mysql:8.0
container_name: proxy-b-mysql
environment:
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./proxy-b-mysql-data:/var/lib/mysql
restart: unless-stopped
proxy-b:
image: zabbix/zabbix-proxy-mysql:6.4-ubuntu-latest
container_name: proxy-b
environment:
DB_SERVER_HOST: proxy-b-mysql
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_HOSTNAME: proxy-b
ZBX_SERVER_HOST: zabbix-server
ports:
- "10053:10051"
depends_on:
- proxy-b-mysql
restart: unless-stopped
# Proxy C
proxy-c-mysql:
image: mysql:8.0
container_name: proxy-c-mysql
environment:
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- ./proxy-c-mysql-data:/var/lib/mysql
restart: unless-stopped
proxy-c:
image: zabbix/zabbix-proxy-mysql:6.4-ubuntu-latest
container_name: proxy-c
environment:
DB_SERVER_HOST: proxy-c-mysql
MYSQL_DATABASE: zabbix_proxy
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_HOSTNAME: proxy-c
ZBX_SERVER_HOST: zabbix-server
ports:
- "10054:10051"
depends_on:
- proxy-c-mysql
restart: unless-stopped
🚀 启动命令
在 zabbix-docker/ 目录执行:
bash
docker-compose up -d
Docker 会自动加载 docker-compose.yml 和 docker-compose.override.yml,一起启动:
- 1 个 Server
- 1 个 Web 前端
- 3 个 Proxy(A/B/C)
⚙️ Web 配置
进入 http://<server_ip>:8080,在 Administration → Proxies 添加:
proxy-aproxy-bproxy-c
⚠️ 名字必须和 ZBX_HOSTNAME 保持一致。