考虑方便移植,多环境部署,整体采用 docker-compose 方式部署
docker-compose
总共4个服务,数据库 + 后台服务 + 前端服务 + Agent
version: '3.7'
services:
zabbix-mysql:
container_name: zabbix-mysql
image: mysql:5.7.40
restart: always
environment:
MYSQL_DATABASE: zabbix
MYSQL_ROOT_PASSWORD: 1qaz@WSXluoan.com.cn
ports:
- "13306:3306"
volumes:
- ./data/mysql:/var/lib/mysql
zabbix-server:
container_name: zabbix-server
image: zabbix/zabbix-server-mysql:latest
restart: always
depends_on:
- zabbix-mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: 1qaz@WSXluoan.com.cn
MYSQL_USER: root
DB_SERVER_HOST: zabbix-mysql
DB_SERVER_PORT: ${DB_SERVER_PORT}
ports:
- "10051:10051"
volumes:
- ./data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- ./data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
zabbix-web:
container_name: zabbix-web
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
depends_on:
- zabbix-mysql
- zabbix-server
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: 1qaz@WSXluoan.com.cn
MYSQL_USER: root
DB_SERVER_HOST: zabbix-mysql
DB_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-agent
image: zabbix/zabbix-agent:latest
restart: always
depends_on:
- zabbix-mysql
- zabbix-server
environment:
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: YES
6:20230724:165956.919 IPMI monitoring: YES
6:20230724:165956.919 Web monitoring: YES
6:20230724:165956.919 VMware monitoring: YES
6:20230724:165956.919 SMTP authentication: YES
6:20230724:165956.919 ODBC: YES
6:20230724:165956.919 SSH support: YES
6:20230724:165956.919 IPv6 support: YES
6:20230724:165956.919 TLS support: YES
6:20230724:165956.919 ******************************
6:20230724:165956.919 using configuration file: /etc/zabbix/zabbix_server.conf
6: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