【安装教程】zabbix docker-compose

下面使用docker-compose部署安装zabbix监控,简化部署,更好管理与维护。本教程采用三台机器搭建,系统均为centos7。

zabbix整个服务功能介绍如下:

  • mysql:数据库,用于存储监控数据(必选)
  • phpmyadmin:数据库管理程序,用PHP开发的数据库网页管理控制台(选装)
  • zabbix server:服务端程序,用来接受客户端的数据用(必选)
  • zabbix agent2:客户端程序,用来收集客户端数据并推送给zabbix server用(必选)
  • zabbix web interface:网页管理控制台,用于查看与管理zabbix(必选)
  • zabbix proxy:代理程序,用于缓解zabbix server对接太多客户端导致压力过大而设计的中转程序(选装)
  • zabbix Java gateway:用于监控JAVA程序和JAVA应用服务器(选装)

zabbix各服务通信开放端口:

  • mysql:3306/tcp
  • phpmyadmin:80/tcp
  • zabbix server:10051/tcp
  • zabbix agent2:10050/tcp
  • zabbix web interface:8080/tcp、8443/tcp、8080/udp、8443/udp
  • zabbix proxy:10051/tcp

zabbix的工作模式:

被动模式(本教程为此模式):

  • zabbix server —-> zabbix proxy —-> zabbix agent

主动模式:

  • zabbix server <—- zabbix proxy <—- zabbix agent

一、主程序搭建

1.部署zabbix的docker-compose文件:

---
version: '3'
services:
  mysql:
    image: mysql:8.0.33-debian
    container_name: mysql
    restart: always
    networks:
      - internal
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_DATABASE=zabbix 
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@000
    volumes:
      - /home/docker/mysql/data:/var/lib/mysql
      - /home/docker/mysql/conf.d:/etc/mysql/conf.d
      - /home/docker/mysql/logs:/var/log/mysql
    command: 
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin

  phpmyadmin:
    container_name: phpmyadmin
    image: lscr.io/linuxserver/phpmyadmin:latest
    restart: always
    depends_on:
      - mysql
    networks:
      - internal
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - PMA_ARBITRARY=0
      - PMA_HOST=mysql
    volumes:
      - /home/docker/phpmyadmin/config:/config

  zabbix-server:
    image: zabbix/zabbix-server-mysql:6.4-centos-latest
    container_name: zabbix-server
    hostname: zabbix-server
    restart: always
    depends_on:
      - mysql
    networks:
      - internal
    ports:
      - 10051:10051
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
      - ZBX_LISTENPORT=10051
      - DB_SERVER_HOST=mysql
      - DB_SERVER_PORT=3306
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@000
    volumes:
      - /home/docker/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts
      - /home/docker/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts
      - /home/docker/zabbix-server/modules:/var/lib/zabbix/modules
      - /home/docker/zabbix-server/enc:/var/lib/zabbix/enc
      - /home/docker/zabbix-server/ssh_keys:/var/lib/zabbix/ssh_keys
      - /home/docker/zabbix-server/certs:/var/lib/zabbix/ssl/certs
      - /home/docker/zabbix-server/keys:/var/lib/zabbix/ssl/keys
      - /home/docker/zabbix-server/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
      - /home/docker/zabbix-server/snmptraps:/var/lib/zabbix/snmptraps
      - /home/docker/zabbix-server/mibs:/var/lib/zabbix/mibs
      - /home/docker/zabbix-server/export:/var/lib/zabbix/export      

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:6.4-centos-latest
    container_name: zabbix-web
    hostname: zabbix-web
    restart: always
    depends_on:
      - mysql
      - zabbix-server
    networks:
      - internal
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
      - ZBX_SERVER_HOST=zabbix-server
      - ZBX_SERVER_PORT=10051
      - DB_SERVER_HOST=mysql
      - DB_SERVER_PORT=3306
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@000
      - PHP_TZ=Asia/Shanghai
      - ZBX_SERVER_NAME=Zabbix 6.4
    volumes:
      - /home/docker/zabbix-web/nginx:/etc/ssl/nginx
      - /home/docker/zabbix-web/certs:/etc/zabbix/web/certs

networks:
  internal:
    external: true

2.其他说明

  • 安装NGINX反向代理给zabbix添加SSL证书
  • 需要在NGINX反向代理中添加好容器代理
  • zabbix默认网页登录用户与密码:Admin / zabbix
  • phpmyadmin默认账户密码:root / Admin@000
  • 需要创建好docker网络后让zabbix服务再加入网络即可

二、代理搭建

1.部署zabbix-proxy的docker-compose文件:

version: '3'

services:
  mysql:
    image: mysql:8.0.33-debian
    container_name: mysql
    restart: always
    networks:
      - internal
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
      - MYSQL_ROOT_PASSWORD=Admin@000
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@000
    volumes:
      - /home/docker/mysql/data:/var/lib/mysql
      - /home/docker/mysql/conf.d:/etc/mysql/conf.d
      - /home/docker/mysql/logs:/var/log/mysql
    command: 
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      
  phpmyadmin:
    container_name: phpmyadmin
    image: lscr.io/linuxserver/phpmyadmin:latest
    restart: always
    depends_on:
      - mysql
    networks:
      - internal
    ports:
      - 1000:80
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - PMA_ARBITRARY=0
      - PMA_HOST=mysql
    volumes:
      - /home/docker/phpmyadmin/config:/config

  zabbix-proxy:
    image: zabbix/zabbix-proxy-mysql:6.4-centos-latest
    container_name: zabbix-proxy
    hostname: zabbix-proxy
    restart: always
    depends_on:
      - mysql
    networks:
      - internal
    ports:
      - 10051:10051
    environment:
      - TZ=Asia/Shanghai
      - DB_SERVER_HOST=mysql
      - DB_SERVER_PORT=3306
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@000
      - ZBX_PROXYMODE=1
      - ZBX_HOSTNAME=zabbix-proxy
      - ZBX_SERVER_HOST=10.10.1.42
      - ZBX_SERVER_PORT=10051
    volumes:
      - /home/docker/zabbix-proxy/externalscripts:/usr/lib/zabbix/externalscripts
      - /home/docker/zabbix-proxy/logs:/var/log/zabbix
      - /home/docker/zabbix-proxy/lib:/var/lib/zabbix

networks:
  internal:
    external: true

2.其他说明:

  • 如果agent2节点对接不上需要重启一下zabbix-proxy代理服务
  • 如果agent2节点对接后,在zabbix-proxy的日志中显示:interface became available;则代表成功,反之请重启容器后再尝试。

三、节点搭建

1.安装zabbix-agent2的docker-compose文件:

version: '3'
services:
  zabbix-agent2:
    image: zabbix/zabbix-agent2:6.4-centos-latest
    container_name: zabbix-agent2
    hostname: zabbix-agent2
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
      - ZBX_HOSTNAME=zabbix-agent2
      - ZBX_SERVER_PORT=10051
      - ZBX_SERVER_HOST=10.10.1.38
      - ZBX_ACTIVE_ALLOW=false
      - ZBX_ACTIVESERVERS=10.10.1.38:10051

2.其他说明:

  • 日志没报错通常代表部署成功
  • 如果在zabbix服务器上部署,则IP可能是容器的IP,可以部署起来查看节点日志确认。需要替换为日志所提示的IP才可以正常监控。

四、网页设置

1.登录zabbix管理后台,首先添加proxy代理,选择被动式。

2.添加agent2主机监控节点:


效果展示:

end…