agent离线包的下载地址:https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/
server用的是docker,不是上述的链接
一、外网环境准备(需联网设备操作)
1. 下载所需 Docker 镜像
# 核心镜像
docker pull mysql:8.0
docker pull zabbix/zabbix-server-mysql:6.0-ubuntu-latest
docker pull zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
docker pull zabbix/zabbix-agent:6.0-ubuntu-latest
# 可选管理工具
docker pull portainer/portainer-ce:latest
docker pull adminer:latest
2. 保存镜像 为离线文件
mkdir zabbix-docker-offline
docker save -o D:/mysql.tar mysql:8.0
docker save -o D:/zabbix-server-mysql.tar zabbix/zabbix-server-mysql:ubuntu-6.0-latest
docker save -o D:/zabbix-server-web.tar zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
docker save -o D:/zabbix-agent.tar zabbix/zabbix-agent:6.0-latest
docker save -o D:/portainer.tar portainer/portainer-ce:latest
docker save -o D:/adminer.tar adminer:latest
# 打包传输 zabbix-docker-offline目录名称
tar czvf zabbix-docker-offline.tar.gz zabbix-docker-offline/
二、内网服务器部署(192.168.145.136)
1. 传输并加载镜像
# 上传文件到服务器
mkdir -p /opt/zabbix-docker
tar xzvf zabbix-docker-offline.tar.gz -C /opt/zabbix-docker
# 加载所有镜像
docker load -i /opt/zabbix-docker/mysql.tar
docker load -i /opt/zabbix-docker/zabbix-server.tar
docker load -i /opt/zabbix-docker/zabbix-web.tar
docker load -i /opt/zabbix-docker/zabbix-agent.tar
2. 创建持久化目录
mkdir -p /data/zabbix/{mysql,server,web}
chmod -R 777 /data/zabbix
3. 编写 docker-compose.yml(字符集不能是**utf8mb4_unicode_ci**)
version: '3.8'
services:
mysql-server:
image: mysql:8.0
container_name: zabbix-mysql
restart: unless-stopped
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: Fit2cloud... # 替换为你的真实密码
MYSQL_ROOT_PASSWORD: Fit2cloud... # 替换为你的真实密码
volumes:
- /data/zabbix/mysql:/var/lib/mysql
networks:
- zabbix-net
ports:
- "3306:3306" #新增:映射3306增加sql远程连接
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_bin
--default-authentication-plugin=mysql_native_password
--log_bin_trust_function_creators=1 # 新增:解决函数创建权限问题(关键)
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pFit2cloud..."] # 替换为你的root密码
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
zabbix-server:
image: zabbix/zabbix-server-mysql:6.0-ubuntu-latest
container_name: zabbix-server
restart: unless-stopped
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: Fit2cloud... # 替换为你的真实密码
ZBX_ENABLE_SNMP_TRAPS: "true"
DB_SERVER_PORT: 3306
volumes:
- /data/zabbix/server:/var/lib/zabbix
networks:
- zabbix-net
ports:
- "10051:10051"
depends_on:
mysql-server:
condition: service_healthy
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
container_name: zabbix-web
restart: unless-stopped
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: Fit2cloud... # 替换为你的真实密码
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
networks:
- zabbix-net
ports:
- "80:8080"
- "443:8443"
depends_on:
zabbix-server:
condition: service_started
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/zabbix/portainer:/data
networks:
- zabbix-net
networks:
zabbix-net:
driver: bridge
4. 启动服务栈
cd /opt/zabbix-docker
docker compose up -d
5. 离线部署报错dbversion.table没找到,需要等一会就行了,如果不行可以从自己的虚拟机里复刻环境,把table导出后手动导入,但这样可能因为数据库字段格式等问题有其他报错(不推荐)
1.进入docker中mysql的命令行
docker exec -it zabbix-mysql mysql -uroot -p
2.导出数据表
mysqldump -u username -p database_name table_name > table_name.sql
3.导入文件,使用命令,将上一步产生的sql文件复制到容器的内部
docker cp /path/to/your/sql/file.sql <container_id_or_name>:/path/in/container
4.进入docker中mysql的命令行
docker exec -it zabbix-mysql mysql -uroot -p
5.导入表
mysql -u username -p new_database_name < table_name.sql
或者直接移植数据
1.把运行的容器关掉
#docker compose down
2.进入compose文件所在的路径,运行如下
#tar -czf zabbix-backup.tar.gz docker-compose.yml /data/zabbix
3.打包之后转移到新机器后,把要复制的data/zabbix解压到 /data/zabbix
6.安装agent时有时连不上,是因为防火墙没开端口(即使开了端口没设置作用域也不行),防火墙关闭即可,
docker agent2的监测模板提取不到数据、监测不到,是因为需要把zabbix用户添加到docker的用户组,没有权限
检查docker组是否存在
1.检查docker组是否存在
#getent group docker
2.将zabbix用户添加到docker 组
#usermod -aG docker zabbix
3.验证用户组更改
#groups zabbix
4.重启zabbix-agent2
#systemctl restart zabbix-agent2
7.当agent连接不上时,排障思路是从server主机测试agent连接,例如
curl 1.1.1.1:10050