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:latest2. 保存镜像 为离线文件
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.tar2. 创建持久化目录
mkdir -p /data/zabbix/{mysql,server,web} chmod -R 777 /data/zabbix3. 编写 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: bridge4. 启动服务栈
cd /opt/zabbix-docker docker compose up -d5. 离线部署报错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/zabbix6.安装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-agent27.当agent连接不上时,排障思路是从server主机测试agent连接,例如
curl 1.1.1.1:10050