我们先来看一下我们要修改得 zabbix.yaml github https://github.com/bboysoulcn/awesome-dockercompose
version: "3" services: zabbix-server: image: "zabbix/zabbix-server-mysql:centos-4.0.4" container_name: "zabbix-server" restart: "always" environment: - "DB_SERVER_HOST=zabbix-db" - "MYSQL_USER=root" - "MYSQL_PASSWORD=" #- "DB_SERVER_PORT=" #- "MYSQL_DATABASE=" volumes: - "zabbix-server-data:/var/lib/zabbix/" - "zabbix-server-scripts:/usr/lib/zabbix/" depends_on: - "zabbix-db" ports: - "10051:10051" extra_hosts: - "mysql.bboysoul.com:10.10.10.200" zabbix-web: image: "zabbix/zabbix-web-nginx-mysql:centos-4.0.4" container_name: "zabbix-web" restart: "always" environment: - "DB_SERVER_HOST=zabbix-db" - "MYSQL_USER=root" - "MYSQL_PASSWORD=" - "ZBX_SERVER_HOST=zabbix-server" - "PHP_TZ=Asia/Shanghai " #- "ZBX_SERVER_PORT=" #- "DB_SERVER_PORT=" #- "MYSQL_DATABASE=" #- "ZBX_SERVER_NAME=" depends_on: - "zabbix-server" - "zabbix-db" ports: - "8082:80" #extra_hosts: # - "mysql.bboysoul.com:10.10.10.200" zabbix-db: image: "mariadb:10.2.22" container_name: "zabbix-db" restart: "always" environment: - "MYSQL_ROOT_PASSWORD=" - "MYSQL_DATABASE=zabbix" #- "MYSQL_USER=" #- "MYSQL_PASSWORD=" #- "MYSQL_ALLOW_EMPTY_PASSWORD=" #- "MYSQL_RANDOM_ROOT_PASSWORD=" #ports: # - "3306:3306" volumes: - "zabbix-db-data:/var/lib/mysql/" volumes: zabbix-server-data: zabbix-db-data: zabbix-server-scripts:
这不是我们想要得zabbix.ayml 和 images 我们要对它进行改造 还有一个坑 哪就是DB 没有支持UTF-8 zabbix 无法存储中文 (主要是在容器初始化时未对容器进行设置)
所以列出改造列表:
1. DB ImagesName mariadb:10.2.22 不要了改为外部存储 host-ip 172.16.1.55 我在本地有个hma 就拿来用吧
2. zabbix-web ImagesName zabbix/zabbix-web-nginx-mysql:centos-4.0.4 修改容器内中文乱码 同步容器和主机时间
3 zabbix-service ImagesName zabbix/zabbix-server-mysql:centos-4.0.4 同步容器和主机时间 添加微信报警插件 同步容器和主机时间
4 持久化存储 数据 zabbix-web . zabbix-server # /data/ zabbix-server-data zabbix-server-scripts
start编写 dockerfile 改造 zabbix-web 容器镜像 zabbix-web-nginx-mysql:centos-4.0.4
FROM zabbix/zabbix-web-nginx-mysql:centos-4.0.4 RUN rm -rf /usr/share/zabbix/fonts/graphfont.ttf #删除容器内原有中文支持软琏接 COPY ./simkai.ttf /usr/share/fonts/dejavu/ RUN ln -s /usr/share/fonts/dejavu/simkai.ttf /usr/share/zabbix/fonts/graphfont.ttf
simkai.ttf #该文件为windown 中文支持字体文件 位置 控制面板-->字体-->选择一种中文字库例如“楷体”(simkai.ttf)
开始重新构建镜像: docker build -t zabbix/zabbix-web-nginx-mysql:centos-5.0.4 .
好开始重新改造第二个容器: dockerfile
FROM zabbix/zabbix-server-mysql:centos-4.0.4 COPY ./weixincfg.json /etc/ COPY ./weixin /usr/lib/zabbix/alertscripts/
#对以上dockerfile 解释
weixincfg.json #文件为个人微信注册信息 讲解文章地址: https://blog.csdn.net/weixin_39845407/article/details/81135946
weixin #微信应用程序包含(weixincfg.json空白文件) 下载地址 https://mirrors.yangxingzhen.com/zabbix/wechat_zabbix.tar.gz
start 重新构建镜像 docker build -t zabbix/zabbix-server-mysql:centos-5.0.4 .
查看构建镜像结果
好了最重要一步 修改 zabbix.yaml
version: "3"
services:
zabbix-server:
image: "zabbix/zabbix-server-mysql:centos-5.0.4"
container_name: "zabbix-server"
restart: "always"
environment:
- "DB_SERVER_HOST=mysql.bboysoul.com"
- "MYSQL_USER=mychen"
- "MYSQL_PASSWORD=237356573"
volumes:
- "/zabbix-data/zabbix-server-data:/var/lib/zabbix/"
- "/zabbix-data/zabbix-server-scripts:/usr/lib/zabbix/"
- "/etc/localtime:/etc/localtime"
ports:
- "10051:10051"
extra_hosts:
- "mysql.bboysoul.com:172.16.1.55"
zabbix-web:
image: "zabbix/zabbix-web-nginx-mysql:centos-5.0.4"
container_name: "zabbix-web"
restart: "always"
environment:
- "DB_SERVER_HOST=mysql.bboysoul.com"
- "MYSQL_USER=mychen"
- "MYSQL_PASSWORD=237356573"
- "ZBX_SERVER_HOST=zabbix-server"
- "PHP_TZ=Asia/Shanghai "
volumes:
- "/etc/localtime:/etc/localtime"
depends_on:
- "zabbix-server"
ports:
- "80:80"
extra_hosts:
- "mysql.bboysoul.com:172.16.1.55"
grafana-web:
关已外接DB 我们只需要在我们本地DB hma cluster 创建 user:mychen password: 237356573 在 creater database zabbix; 就可以了 等一下 我们run zabbix.yaml 容器会自动导入表数据
启动: docker-compose -f ./zabbix.yaml up -d
测试 user: Admin password: zabbix
微信报警测试: 关已报警设置 上面这篇文章也有详细说明: https://blog.csdn.net/weixin_39845407/article/details/81135946