目前我有以下情况:
第一台服务器:我有 Zabbix 组件:服务器、网关和 Web 界面(以及 mysql 数据库),全部通过 Docker 容器运行(发布端口:)
ufw allow 10051
。第二台服务器:我也通过 Docker 运行 Zabbix 代理(发布端口
ufw allow 10050
:)。
两者都是 Ubuntu 20.04.6 LTS。
...
在运行 Zabbix 代理的第二台服务器上,我想要监控正在运行的其他 Docker 容器和操作系统本身。
在 Web 界面(在第一台服务器上)已经配置了运行 Zabbix 代理的主机(我相信它配置正确)。
问题...
在 Web 界面中,在 Zabbix 代理主机的“问题”部分内,它不断告诉我错误(这使我无法从代理收到任何信息):
Docker: Service is down
在 Zabbix 服务器容器日志中我有一些错误行,例如:
discovery rule "hostname:docker.images.discovery" became not supported: Cannot fetch data: Get "http://1.28/images/json": dial unix /var/run/docker.sock: connect: permission denied.
可能出了什么问题?
这是docker-compose.yml
来自第一台服务器的:
version: '3.1'
services:
zabbix-database:
image: mysql:latest
restart: always
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
volumes:
- zabbix-database:/var/lib/mysql
networks:
- zabbix-net
command:
- --character-set-server=utf8
- --collation-server=utf8_bin
- --default-authentication-plugin=mysql_native_password
healthcheck:
interval: 10s
retries: 5
test: mysqladmin ping -proot
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
restart: always
ports:
- "10051:10051"
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- DB_SERVER_HOST=zabbix-database
- ZBX_JAVAGATEWAY=zabbix-gateway
networks:
- zabbix-net
depends_on:
zabbix-database:
condition: service_healthy
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
ports:
- "8080:8080"
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- DB_SERVER_HOST=zabbix-database
- ZBX_SERVER_HOST=zabbix-server
- PHP_TZ=America/Sao_Paulo
networks:
- zabbix-net
depends_on:
zabbix-database:
condition: service_healthy
zabbix-server:
condition: service_started
zabbix-gateway:
image: zabbix/zabbix-java-gateway:latest
restart: always
networks:
- zabbix-net
volumes:
zabbix-database:
networks:
zabbix-net:
driver: bridge
这是第二台服务器的 docker 命令:
docker run \
--name zabbix-agent \
--restart unless-stopped \
-e ZBX_HOSTNAME="hostname-agent-server" \
-e ZBX_SERVER_HOST="domain.com" \
-v /proc:/host/proc \
-v /sys:/host/sys \
-v /:/host/rootfs \
-v /var/run/docker.sock:/var/run/docker.sock \
--publish 10050:10050 \
--privileged \
--detach \
zabbix/zabbix-agent2:latest
但是,运行命令zabbix_get -s domain.com -k system.hostname
或zabbix_get -s domain.com -k system.hw.cpu
从 Zabbix 服务器容器内部我可以正确获取返回的信息,没有任何错误!