APT 安装方式(适合生产环境)Zabbix 6.4 LTS

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

四、配置数据库

  1. 登录 MySQL:
bash 复制代码
sudo mysql -uroot
  1. 创建数据库和用户:
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;
  1. 导入初始数据:
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 界面配置

  1. 登录 Zabbix Web(Server 节点 http://server_ip:8080)。

  2. Administration → Proxies 添加 Proxy:

    • Proxy name:要和 ZBX_HOSTNAME 一致,比如 proxy-b
    • Mode:Active(推荐)
  3. 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.ymldocker-compose.override.yml,一起启动:

  • 1 个 Server
  • 1 个 Web 前端
  • 3 个 Proxy(A/B/C)

⚙️ Web 配置

进入 http://<server_ip>:8080,在 Administration → Proxies 添加:

  • proxy-a
  • proxy-b
  • proxy-c

⚠️ 名字必须和 ZBX_HOSTNAME 保持一致。

相关推荐
IvanCodes5 小时前
十六、Linux网络配置
linux·运维·网络
j_xxx404_5 小时前
Linux:权限(完结)|权限管理|修改权限chmod chown charp|文件类型|拓展
linux·运维·服务器
板鸭〈小号〉6 小时前
应用层自定义协议与序列化
运维·服务器·网络·1024程序员节
Test-Sunny7 小时前
MLOps 的CI/CD VS DevOps 的CI/CD
运维·ci/cd·devops
YongCheng_Liang7 小时前
Windows CMD 常用命令:7 大核心模块速查指南(附实战场景)
运维·服务器·windows·1024程序员节
huangyuchi.7 小时前
【Linux网络】套接字Socket编程预备
linux·运维·服务器·端口号·linux网络·套接字·1024程序员节
Bruce_Liuxiaowei7 小时前
[特殊字符] C&C服务器:网络攻击的指挥中心
运维·服务器·网络安全
阿酷tony7 小时前
IIS服务器一直报Application Error错误
运维·服务器
wanhengidc7 小时前
服务器硬件设备都有哪些?
运维·服务器·网络·游戏·智能手机·架构·云计算