由于公司线上服务器数量太少,又要用于生产,领导让上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'