使用Docker 部署一套zabbix监控
- 概述
- 部署 zabbix
- 1.创建zabbix网络
- 2.启动mysql服务(使用外置可不执行)
- 3.启动服务端
- 4.启动web界面
- 5.启动客户端
- 成果展示
- 参考文档
概述
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。
Zabbix 是一个企业级的开源分布式监控解决方案。
Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用。
Zabbix 是免费的。Zabbix 是在 GPL 通用公共许可证第 2 版下编写和分发的。这意味着它的源代码是免费分发的,可供公众使用。
部署 zabbix
下面部署所涉及到文件皆可在gitee仓库上获取
1.创建zabbix网络
docker network create -d bridge --subnet 192.168.1.0/16 --gateway 192.168.1.1 zabbix
2.启动mysql服务(使用外置可不执行)
如果使用的是外置数据库的话,下面服务所连接的数据库配置都记得修改
version: '3.5'
services:
mysql-server:
image: mysql:8.0
restart: unless-stopped
container_name: mysql-server
# docker 容器安全验证
security_opt:
- seccomp:unconfined
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: zabbix
TZ: Asia/Shanghai
command:
- mysqld
- --character-set-server=utf8
- --collation-server=utf8_bin
- --default-authentication-plugin=mysql_native_password
volumes:
- ./data:/var/lib/mysql:rw
networks:
default:
external:
name: zabbix
cd mysql
docker-compose up -d
3.启动服务端
version: '3.5'
services:
zabbix-server:
restart: unless-stopped
container_name: zabbix-server
image: zabbix/zabbix-server-mysql:ubuntu-5.0-latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
# - ./alertscripts:/usr/lib/zabbix/alertscripts:ro
# - ./externalscripts:/usr/lib/zabbix/externalscripts:ro
# - ./export:/var/lib/zabbix/export:rw
# - ./modules:/var/lib/zabbix/modules:ro
# - ./enc:/var/lib/zabbix/enc:ro
# - ./ssh_keys:/var/lib/zabbix/ssh_keys:ro
# - ./mibs:/var/lib/zabbix/mibs:ro
# - ./snmptraps:/var/lib/zabbix/snmptraps:rw
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
# depends_on:
# - zabbix-java-gateway
# - zabbix-snmptraps
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: zabbix
# ZBX_JAVAGATEWAY: "zabbix-java-gateway"
TZ: Asia/Shanghai
stop_grace_period: 30s
sysctls:
- net.ipv4.ip_local_port_range=1024 65000
- net.ipv4.conf.all.accept_redirects=0
- net.ipv4.conf.all.secure_redirects=0
- net.ipv4.conf.all.send_redirects=0
# 有监控java服务的需求
# zabbix-java-gateway:
# restart: unless-stopped
# container_name: zabbix-java-gateway
# image: zabbix/zabbix-java-gateway:ubuntu-5.0-latest
# profiles:
# - full
# - all
# ports:
# - "10052:10052"
# zabbix-snmptraps:
# restart: unless-stopped
# container_name: zabbix-snmptraps
# image: zabbix/zabbix-snmptraps:ubuntu-5.0-latest
# profiles:
# - full
# - all
# ports:
# - "162:1162/udp"
# volumes:
# - ./snmptraps:/var/lib/zabbix/snmptraps:rw
networks:
default:
external:
name: zabbix
cd zabbix-server
docker-compose up -d
4.启动web界面
version: '3.5'
services:
zabbix-web:
restart: unless-stopped
container_name: zabbix-web
image: zabbix/zabbix-web-nginx-mysql:ubuntu-5.0-latest
ports:
- "80:8080"
- "443:8443"
volumes:
# zabbix 设置中文后会出现乱码,这里挂载字体替换默认的字体
- './fonts/msyh.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf'
environment:
ZBX_SERVER_HOST: zabbix-server
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: zabbix
TZ: Asia/Shanghai
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080/" ]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
sysctls:
- net.core.somaxconn=65535
networks:
default:
external:
name: zabbix
cd zabbix-web
docker-compose up -d
5.启动客户端
version: '3.5'
services:
zabbix-agent:
restart: always
container_name: zabbix-agent
image: zabbix/zabbix-agent:ubuntu-5.0-latest
privileged: true
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime:ro
- './zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf'
- '/:/rootfs'
- '/var/run:/var/run'
environment:
# 正常来说,使用环境变量即可,不一定要挂载它的配置文件
# 我这边是出现 zabbix 网关 192.168.1.1 请求不通过,
# 试过许多方法没解决,无奈只能挂载配置文件
# ZBX_HOSTNAME: "zabbix server"
# ZBX_SERVER_HOST: zabbix-server
TZ: Asia/Shanghai
networks:
default:
external:
name: zabbix
cd zabbix-agent
docker-compose up -d
界面提示错误:
访问界面 http://localhost 发送错误报警如下:
解决方法:
将主机中的客户端名称和ip地址修改一下即可,当然它们在docker同一网络内,可以使用dns解析(照样要修改)
成果展示