考虑方便移植,多环境部署,整体采用 docker-compose 方式部署
docker-compose
总共4个服务,数据库 + 后台服务 + 前端服务 + Agent
version: '3.7'
services:zabbix-mysql:container_name: zabbix-mysqlimage: mysql:5.7.40restart: alwaysenvironment:MYSQL_DATABASE: zabbixMYSQL_ROOT_PASSWORD: 1qaz@WSXluoan.com.cnports:- "13306:3306"volumes:- ./data/mysql:/var/lib/mysqlzabbix-server:container_name: zabbix-serverimage: zabbix/zabbix-server-mysql:latestrestart: alwaysdepends_on:- zabbix-mysqlenvironment:MYSQL_DATABASE: zabbixMYSQL_PASSWORD: 1qaz@WSXluoan.com.cnMYSQL_USER: rootDB_SERVER_HOST: zabbix-mysqlDB_SERVER_PORT: ${DB_SERVER_PORT}ports:- "10051:10051"volumes:- ./data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts- ./data/zabbix/externalscripts:/usr/lib/zabbix/externalscriptszabbix-web:container_name: zabbix-webimage: zabbix/zabbix-web-nginx-mysql:latestrestart: alwaysdepends_on:- zabbix-mysql- zabbix-serverenvironment:MYSQL_DATABASE: zabbixMYSQL_PASSWORD: 1qaz@WSXluoan.com.cnMYSQL_USER: rootDB_SERVER_HOST: zabbix-mysqlDB_SERVER_PORT: ${DB_SERVER_PORT}ZBX_SERVER_HOST: ${ZBX_SERVER_HOST}ZBX_SERVER_PORT: ${ZBX_SERVER_PORT}ports:- "18080:8080"zabbix-agent:container_name: zabbix-agentimage: zabbix/zabbix-agent:latestrestart: alwaysdepends_on:- zabbix-mysql- zabbix-serverenvironment:ZBX_HOSTNAME: ${ZBX_SERVER_HOST}ZBX_SERVER_HOST: ${ZBX_SERVER_HOST}ZBX_SERVER_PORT: ${ZBX_SERVER_PORT}ports:- "10050:10050"
若权限不够则执行
不安全,但方便…需要寻求一种新的折中方式
chmod -R 777 /home/devops/zabbix
问题
服务器 磁盘 docker 目录不对,目前在系统盘,需要重新挂到数据盘
参考:https://blog.csdn.net/z1353095373/article/details/131646058
程序无法连接MySQL
docker exec -it zabbix-web /bin/bash
mysql -hzabbix-mysql -uroot -p1qaz@WSXluoan.com.cn
是通的,但程序报日志
docker logs zabbix-web
zabbix-server | **** MySQL server is not available. Waiting 5 seconds...
zabbix-web | **** MySQL server is not available. Waiting 5 seconds...
解决:
使用 IP 代替服务名配置,如 zabbix-mysql
程序连接后报错退出
异常信息
Starting Zabbix Server. Zabbix 5.4.9 (revision d81e506).
Press Ctrl+C to exit.6:20230724:165956.919 Starting Zabbix Server. Zabbix 5.4.9 (revision d81e506).6:20230724:165956.919 ****** Enabled features ******6:20230724:165956.919 SNMP monitoring: YES6:20230724:165956.919 IPMI monitoring: YES6:20230724:165956.919 Web monitoring: YES6:20230724:165956.919 VMware monitoring: YES6:20230724:165956.919 SMTP authentication: YES6:20230724:165956.919 ODBC: YES6:20230724:165956.919 SSH support: YES6:20230724:165956.919 IPv6 support: YES6:20230724:165956.919 TLS support: YES6:20230724:165956.919 ******************************6:20230724:165956.919 using configuration file: /etc/zabbix/zabbix_server.conf6:20230724:165956.932 cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)
原因:表是空的,系统自动创建表成功,但数据插入失败?可能是官方故意为之?
解决:
## 关闭 zabbix-server 服务,删除数据库,并重新创建数据库,手动导入数据
切换至 SSH
docker stop zabbix-server切换至 Navicat
DROP DATABASE IF EXISTS zabbix;CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_general_ci;使用Navicat多线程导入,create.sql切换至 SSH
docker start zabbix-server
中文乱码问题
参考:https://www.cnblogs.com/operationhome/p/11016809.html
## 备份原字体
docker exec -it zabbix-web /bin/bash
cd /usr/share/zabbix/assets/fonts/
mv DejaVuSans.ttf DejaVuSans.ttf.bak
exit
## 复制字体至容器内部
docker cp /home/devops/zabbix/data/tmp/DejaVuSans.ttf zabbix-web:/usr/share/zabbix/assets/fonts/
## 验证
docker exec -it zabbix-web /bin/bash
ls /usr/share/zabbix/assets/fonts/
exit
WEB 访问地址
http://ip:18080
Admin
zabbix