欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

zabbix+docker

程序员文章站 2022-06-26 09:14:49
由于公司线上服务器数量太少,又要用于生产,领导让上zabbix,但熟知zabbix搭建需要LAMP或者LNMP,如果和生产服务器混搭的话,不方便管理,也怕出问题,所以就先使用docker方式搭建管理。 zabbix组件:web、zabbix-server、zabbix-agent、如果服务器过多还需 ......

由于公司线上服务器数量太少,又要用于生产,领导让上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模式,最终效果就是:

zabbix+docker

后将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'