由於公司線上伺服器數量太少,又要用於生產,領導讓上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模式,最終效果就是:
後將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'