下面使用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…





