ubuntu 24采用docker compose 部署zabbix server 4.0+zabbix proxy4.0 +zabbix agent4.0

环境:
os:ubuntu 24.04
zabbix:4.0.9
ip地址 角色
192.168.1.100 zabbix server
192.168.1.105 zabbix proxy
192.168.1.106 zabbix agent

说明:
agent端不建议使用docker,因为docker容器里监控宿主机不是那么方便.

1.设置hostname
192.168.1.100
hostnamectl set-hostname zabbix-server

192.168.1.105
hostnamectl set-hostname zabbix-proxy

192.168.1.106
hostnamectl set-hostname zabbix-agent

 

2.每个机器都部署docker+docker compose
参考安装连接
https://www.cnblogs.com/hxlasky/p/22238069

 

################################zabbix server#######################

1.准备 docker-compose.yml 文件

mkdir /opt/zabbix
vi /opt/zabbix/docker-compose.yml

version: '3.7'

services:
  mysql:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/mysql:5.7.30
    container_name: zabbix-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "Root@123456"
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: "Zabbix@123"
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
      - --default-authentication-plugin=mysql_native_password
    volumes:
      - ./mysql_data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    networks:
      - zbx-net
    healthcheck:
      test: ["CMD","mysqladmin","ping","-h","127.0.0.1","-uroot","-pRoot@123456"]
      interval: 10s
      timeout: 5s
      retries: 10

  zabbix-server:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/zabbix-server-mysql:ubuntu-4.0.9
    container_name: zabbix-server
    restart: always
    ports:
      - "10051:10051"
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: "Zabbix@123"
      MYSQL_ROOT_PASSWORD: "Root@123456"
      ZBX_CACHESIZE: 256M
      ZBX_STARTPOLLERS: 20
    volumes:
      - ./zabbix_server_alertscripts:/usr/lib/zabbix/alertscripts
      - ./zabbix_server_externalscripts:/usr/lib/zabbix/externalscripts
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      mysql:
        condition: service_healthy
    networks:
      - zbx-net

  zabbix-web:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/zabbix-web-apache-mysql:ubuntu-4.0.9
    container_name: zabbix-web
    restart: always
    ports:
      - "8080:80"
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: "Zabbix@123"
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - mysql
      - zabbix-server
    networks:
      - zbx-net

networks:
  zbx-net:
    driver: bridge

 

2.创建本地持久化目录
cd /opt/zabbix
mkdir -p mysql_data zabbix_server_alertscripts zabbix_server_externalscripts


3.启动
cd /opt/zabbix
docker compose up -d

 

4.界面登录访问
http://192.168.1.100:8080
默认的账号密码是:Admin/zabbix

 

5.登录容器查看
docker exec -ti zabbix-server /bin/bash
docker exec -ti zabbix-mysql /bin/bash
docker exec -ti zabbix-web /bin/bash

 

6.查看日志
docker compose logs zabbix-server
docker compose logs mysql
docker compose logs zabbix-web

 

################################zabbix proxy#######################

192.168.1.106机器上操作
1.准备 docker-compose.yml 文件
mkdir /opt/zabbix
cd /opt/zabbix

vi /opt/zabbix/docker-compose.yml
先按 Esc 键确保处于普通模式
输入命令 :set paste 并回车

version: '3.7'

services:
  proxy-mysql:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/mysql:5.7.30
    container_name: zabbix-proxy-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "ProxyRoot@123456"
      MYSQL_DATABASE: zabbix_proxy
      MYSQL_USER: zabbix_proxy
      MYSQL_PASSWORD: "Proxy@123"
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
      - --default-authentication-plugin=mysql_native_password
    volumes:
      - ./proxy_mysql_data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    networks:
      - proxy-net
    healthcheck:
      test: ["CMD","mysqladmin","ping","-h","127.0.0.1","-uroot","-pProxyRoot@123456"]
      interval: 10s
      timeout: 5s
      retries: 10

  zabbix-proxy:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/zabbix-proxy-mysql:ubuntu-4.0.9
    container_name: zabbix-proxy
    restart: always
    ports:
      - "10051:10051"
    environment:
      DB_SERVER_HOST: proxy-mysql
      MYSQL_DATABASE: zabbix_proxy
      MYSQL_USER: zabbix_proxy
      MYSQL_PASSWORD: "Proxy@123"
      # ========== 修改这里为你的zabbix server真实IP ==========
      ZBX_SERVER_HOST: 192.168.1.100
      ZBX_PROXYMODE: 0
      ZBX_HOSTNAME: "zabbix-proxy" ##zabbix proxy 主机名称
      ZBX_CACHESIZE: 128M
      ZBX_STARTPOLLERS: 10
    volumes:
      - ./proxy_alertscripts:/usr/lib/zabbix/alertscripts
      - ./proxy_externalscripts:/usr/lib/zabbix/externalscripts
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      proxy-mysql:
        condition: service_healthy
    networks:
      - proxy-net

networks:
  proxy-net:
    driver: bridge

 

2.启动
mkdir -p /opt/zabbix/proxy_mysql_data
mkdir -p /opt/zabbix/proxy_alertscripts
mkdir -p /opt/zabbix/proxy_externalscripts
cd /opt/zabbix
docker compose up -d

 

3.查看日志
docker compose logs proxy-mysql
docker compose logs zabbix-proxy

 

4.登录容器
docker exec -ti proxy-mysql /bin/bash
docker exec -ti zabbix-proxy /bin/bash

 

################################zabbix agent#######################

在192.168.1.106机器上操作
1.准备 docker-compose.yml文件
mkdir -p /opt/zabbix
cd /opt/zabbix

vi /opt/zabbix/docker-compose.yml

version: '3.7'
services:
  zabbix-agent:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/zabbix-agent:centos-4.0.9
    container_name: zabbix-agent
    restart: always
    privileged: true
    environment:
      # 修改为你的Zabbix Proxy IP地址
      ZBX_SERVER_HOST: "192.168.1.105"
      ZBX_SERVER_ACTIVE: "192.168.1.105:10051"
      #主机名,Web后台创建主机必须完全一致(大小写敏感)
      ZBX_HOSTNAME: "zabbix-agent"
      ZBX_ENABLE_REMOTE_COMMANDS: "1"
      ZBX_UNSAFE_USER_PARAMETERS: "1"
    volumes:
      # 挂载宿主机资源,用于采集磁盘、进程、CPU等
      - /:/rootfs:ro
      - /proc:/proc
      - /sys:/sys
      - /dev:/dev
      - /etc/localtime:/etc/localtime:ro
    networks:
      - agent-net

networks:
  agent-net:
    driver: bridge

 

2.启动
root@zabbix-agent:/# cd /opt/zabbix
docker compose up -d

 

3.查看日志
docker compose logs zabbix-agent

 

4.登录容器
docker exec -ti zabbix-agent /bin/bash

 

5.相关文件外放到宿主机
宿主机上创建目录
mkdir /opt/zabbix/scripts
mkdir /opt/zabbix/zabbix_agentd.d

 

7.停掉容器
cd /opt/zabbix
docker compose down

 

8.修改docker-compose.yml
cd /opt/zabbix
vi docker-compose.yml

 

version: '3.7'
services:
  zabbix-agent:
    image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/zabbix-agent:centos-4.0.9
    container_name: zabbix-agent
    restart: always
    ports:
      - "10050:10050"    
    privileged: true
    environment:
      # 修改为你的Zabbix Proxy IP地址
      ZBX_SERVER_HOST: "192.168.1.105"
      ZBX_SERVER_ACTIVE: "192.168.1.105:10051"
      #主机名,Web后台创建主机必须完全一致(大小写敏感)
      ZBX_HOSTNAME: "zabbix-agent"
      ZBX_ENABLE_REMOTE_COMMANDS: "1"
      ZBX_UNSAFE_USER_PARAMETERS: "1"
    volumes:
      # 挂载宿主机资源,用于采集磁盘、进程、CPU等
      - /:/rootfs:ro
      - /proc:/proc
      - /sys:/sys
      - /dev:/dev
      - /etc/localtime:/etc/localtime:ro
      - /opt/zabbix/scripts:/etc/zabbix/scripts
      - /opt/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d
    networks:
      - agent-net

 

9.重新部署
cd /opt/zabbix
docker compose up -d

 

posted @ 2026-08-06 09:08  slnngk  阅读(3)  评论(0)    收藏  举报