zabbix+docker

由于公司线上服务器数量太少,又要用于生产,领导让上zabbix,但熟知zabbix搭建需要LAMP或者LNMP,如果和生产服务器混搭的话,不方便管理,也怕出问题,所以就先使用docker方式搭建管理。

zabbix组件:web、zabbix-server、zabbix-agent、如果服务器过多还需要用到zabbix-proce,这里未使用。

环境: 服务器A:172.18.237.14

服务器B:172.18.237.13 

这里使用的zabbix官方镜像地址:https://hub.docker.com/r/zabbix/

下面yml中用到的镜像都在此处,以及官方提供的变量,也可以到对应镜像说明查看。

A服务器将作为server端(当然也要安装agent,监控自身),B服务器作为client端。 A服务器创建docker-compose.yml,内容如下:

version: '3'
services:
  zabbix-mysql:
    image: mysql:5.7
    container_name: zabbix-mysql
    ports:
      - '13306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: 123456
    volumes:
      - ./zabbix_mysql_data:/var/lib/mysql

  zabbix-web-apache-mysql:
    image: zabbix/zabbix-web-apache-mysql
    container_name: zabbix-web-apache-mysql
    environment:
      DB_SERVER_HOST: zabbix-mysql
      DB_SERVER_PORT: 3306
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456
      ZBX_SERVER_HOST: zabbix-server-mysql
      PHP_TZ: Asia/Shanghai
    ports:
      - '80:80'
      - '443:443'
    links:
      - zabbix-mysql
      - zabbix-server-mysql
    depends_on:
      - zabbix-mysql
      - zabbix-server-mysql

  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql
    container_name: zabbix-server-mysql
    network_mode: host
    environment:
      DB_SERVER_HOST: 127.0.0.1
      DB_SERVER_PORT: 13306
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - '10051:10051'
#    links:
#      - zabbix-mysql
    depends_on:
      - zabbix-mysql

  zabbix-agent:
    image: zabbix/zabbix-agent
    container_name: zabbix-agent
    network_mode: host
    environment:
      ZBX_HOSTNAME: zabbix-server-agent #这里的名字可以随意填写,不影响连接
      ZBX_SERVER_HOST: 127.0.0.1
    ports:
      - '10050:10050'

之前用别人的yml,zabbix是搭建起来了,客户端的agent也能与server建立通信,但server端自身始终无法与监听到server端的agent,zabbix-server容器网络为bridge,通过端口映射方式将10051端口对外访问,zabbix-agent用的host模式,最终效果就是:

后将yml修改为当前所示,问题解决。将zabbix-server容器也改为host模式,所以当前网络情况为:

web容器和mysql容器使用bridge网络,并将端口映射至本机对外提供访问,并通过link连接,它们之间通过bridge网络实现互访(如3306端口);

zabbix-server和zabbix-agent都使用host网络,zabbix-server与web、mysql通过host:(映射端口)进行互联(如13306端口)。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

其他client上agent的docker-compose.yml配置如下:

version: '3'
services:

  zabbix-agent:
    image: zabbix/zabbix-agent
    container_name: zabbix-agent
    network_mode: host
    environment:
      ZBX_HOSTNAME: one  #这里的名字可以随意填写
      ZBX_SERVER_HOST: 172.18.237.14 #这里填写server的地址
    ports:
      - '10050:10050'
未至精疲力尽,不要怨天尤人。昨日因,今日果。今日为,明日果也!
原文地址:https://www.cnblogs.com/ccit/p/9988901.html