代理与 Zabbix Docker 服务器之间的通信失败

代理与 Zabbix Docker 服务器之间的通信失败

目前我有以下情况:

  • 第一台服务器:我有 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.hostnamezabbix_get -s domain.com -k system.hw.cpu从 Zabbix 服务器容器内部我可以正确获取返回的信息,没有任何错误!

相关内容