二、通過docker安裝部署zabbix5.0監控平台


zabbix的安裝部署非常簡單,官方提供了四種安裝途徑,分別是二進制rpm包安裝方式、源碼安裝方式、容器安裝方式和虛擬機鏡像安裝方式,根據學習方式和運維經驗,這里推薦大家用docker容器安裝zabbix-server、zabbix-web,而通過rpm包方式安裝zabbix agent/agent2。

Zabbix web端是基於HTTP服務器和PHP腳本語言進行構建的,HTTP服務器可以是nginx或apache,zabbix的數據存儲支持多種數據庫,可以是MySQL、Oracle、PostgreSQL、SQLite等,這里我們選擇MySQL數據庫作為后端存儲。

采用docker安裝zabbix,需要下載多個鏡像,分別是:Mysql鏡像、zabbix-server鏡像、Zabbix web鏡像、zabbix-java-gateway鏡像以及zabbix-agent鏡像。這些鏡像都可以從docker官方鏡像站https://hub.docker.com/下載,分別對應的鏡像名字為:
zabbix-server鏡像:zabbix-server-mysql 地址:https://hub.docker.com/r/zabbix/zabbix-server-mysql

Zabbix web鏡像: zabbix-web-nginx-mysql 地址:https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql

Zabbix agent鏡像: zabbix-agent 地址:https://hub.docker.com/r/zabbix/zabbix-agent

Zabbix agent2鏡像: zabbix-agent2 地址: https://hub.docker.com/r/zabbix/zabbix-agent2

MySQL鏡像: mysql 地址: https://hub.docker.com/_/mysql

zabbix-java-gateway鏡像: zabbix-java-gateway 地址:https://hub.docker.com/r/zabbix/zabbix-java-gateway

1、安裝docker引擎

(1): 安裝必要的一些系統工具

[root@dockerserver ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

(2): 添加軟件源信息

[root@dockerserver ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3): 更新並安裝 Docker-CE

[root@dockerserver ~]# yum makecache fast

[root@dockerserver ~]# yum -y install docker-ce

(4): 開啟Docker服務

[root@dockerserver ~]# systemctl  start docker

2、下載鏡像

(1)、拉取mysql鏡像

這里使用8.0版本,在linux終端拉取8.0.23鏡像

docker pull mysql:8.0.23

(2)、下載zabbix-server鏡像

zabbix-server鏡像分兩種,支持MySQL數據庫zabbix-server-mysql,支持支持PostgreSQL數據庫zabbix/zabbix-server-pgsql。下面安裝的是支持MySQL數據庫的Server鏡像。
打開zabbix-server-mysql的docker hub,大家會發現,zabbix-server-mysql有多個版本,可根據自己的環境選擇合適版本。因為我的服務器是centos7版本,所以選擇的是centos版本,zabbix版本我也選擇最新版5.2.4,所以下載鏡像方式如下:

docker pull zabbix/zabbix-server-mysql:centos-5.2.4

如果你要使用最新版本的zabbix-server鏡像,也可以直接執行如下方式下載鏡像:

docker pull zabbix/zabbix-server-mysql:centos-latest

(3)、下載Zabbix web鏡像

這里使用的是基於Nginx web服務器及支持MySQL數據庫的Zabbix web接口zabbix/zabbix-web-nginx-mysql。這里我用的是centos-5.2.4版本:

docker pull zabbix/zabbix-web-nginx-mysql:centos-5.2.4

要用最新版本,也可直接用latest版本
docker pull zabbix/zabbix-web-nginx-mysql:latest

(4)、下載zabbix-java-gateway鏡像

Zabbix本身不支持直接監控Java,而是使用zabbix-java-gateway監控jvm/tomcat性能。這里我們使用centos-5.2.4版本,在linux終端執行如下命令:

docker pull zabbix/zabbix-java-gateway:centos-5.2.4

3、運行鏡像

(1)、創建docker網絡

啟動zabbix等鏡像之前,需要先創建一個新的Docker網絡。需要將后面的zabbix-server、mysql、web等容器都加入到此網絡中,方便互相訪問。在終端使用下面命令創建。

docker network create -d bridge zabbix_net

創建后,可以查看是否創建成功。

docker network ls

(2)、 運行mysql鏡像,創建mysql容器

docker run -itd -p 3306:3306 --name zabbix-mysql --network zabbix_net --restart unless-stopped -v /etc/localtime:/etc/localtime -v /dockerdata/zabbix/db:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:8.0.23 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin

3、運行鏡像

(3)、運行zabbix-java-gateway鏡像

創建zabbix-java-gateway容器,執行如下命令:

docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:centos-5.2.4

(4)、運行zabbix-server-mysql鏡像
創建zabbix-server-mysql容器之前,首先創建數據卷zabbix-server-vol,通過命令

docker volume create zabbix-server-vol

接着,啟動zabbix-server-mysql容器。

docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway"  -e ZBX_JAVAGATEWAY_ENABLE="true" -e  ZBX_JAVAGATEWAYPORT=10052 zabbix/zabbix-server-mysql:centos-5.2.4

(5)、 運行zabbix-web-nginx-mysql鏡像

創建zabbix-web-nginx-mysql容器,可執行如下命令:

docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime -v /dockerdata/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf --name zabbix-web-nginx-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:centos-5.2.4

(6)、運行zabbix-agent鏡像

本地agent的安裝:

docker run -dit  --name zabbix-agent -p 10050:10050 --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 zabbix/zabbix-agent:centos-5.2.4

zabbix-agent2:

docker run -dit  --name zabbix-agent2 -p 10050:10050 -v /var/run/docker.sock:/var/run/docker.sock --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 --privileged zabbix/zabbix-agent2:latest

4、通過docker-compose一鍵安裝zabbix

docker-compose是用來做docker的多容器控制,有了docker-compose,我們可以把所有繁瑣的docker操作全都一條命令,自動化的完成。

通過編寫一個docker-compose.yml文件,只需要寫好后,運行一句:

docker-compose up -d

就可以完成zabbix的部署了。

要使用docker-compose,需要安裝一個工具docker-compose,可直接從官方:https://github.com/docker/compose/releases 處下載編譯好的二進制文件即可。

curl -L https://github.com/docker/compose/releases/download/1.28.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
vim docker-compose.yml
version: '3'
services:
  zabbix-web-nginx-mysql:
	images: zabbix/zabbix-web-nginx-mysql:centos-5.2.4
	restart: always
	environment:
	  - DB_SERVER_HOST=zabbix-mysql
	  - MYSQL_DATABASE=zabbix
	  - MYSQL_USER=zabbix
	  - MYSQL_PASSWORD=zabbix123
	  - MYSQL_ROOT_PASSWORD=root123
	  - ZBX_SERVER_HOST=zabbix-server-mysql
	ports:
	  - 8080:8080 
	volumes:
	  - /etc/localtime:/etc/localtime
	  - /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf 
	networks
	  - zabbix_net
	depends_on:
	  - zabbix-mysql
	  - zabbix-server-mysql
  zabbix-mysql:
	images: mysql:8.0.23
	restart: always
	environment:
	  - MYSQL_DATABASE=zabbix
	  - MYSQL_USER=zabbix
	  - MYSQL_PASSWORD=zabbix123
	  - MYSQL_ROOT_PASSWORD=root123
	command:
	  - mysqld
	  - --default-authentication-plugin=mysql_native_password
	  - --character-set-server=utf8 
	  - --collation-server=utf8_bin
	volumes:
	  - /etc/localtime:/etc/localtime 
	  - /dockerdata/zabbix/db:/var/lib/mysql
	 ports:
	  - 3306:330
	networks
	  - zabbix_net
  zabbix-java-gateway:
	images: zabbix/zabbix-java-gateway:centos-5.2.4
	restart: always
	volumes:
	  - /etc/localtime:/etc/localtime
	 networks
	  - zabbix_net
	zabbix-server-mysql:
	images:zabbix/zabbix-server-mysql:centos-5.2.4
	restart: always
	volumes:
	  - zabbix-server-vol:/etc/zabbix
	  - /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
	  - /etc/localtime:/etc/localtime
	ports:
	  - 10051:10051
	environment:
	  - DB_SERVER_HOST=zabbix-mysql
	  - MYSQL_DATABASE=zabbix
	  - MYSQL_USER=zabbix
	  - MYSQL_ROOT_PASSWORD=root123
	  - MYSQL_PASSWORD=zabbix123
	  - ZBX_JAVAGATEWAY=zabbix-java-gateway  
      - ZBX_JAVAGATEWAY_ENABLE=true   
	  - ZBX_JAVAGATEWAYPORT=10052 
	depends_on:
	  - zabbix-mysql
	networks:
	  - zabbix_net
  zabbix-agent2:
	images: zabbix/zabbix-agent2:centos-5.2.4
	restart: always
	ports:
	  - 10050:10050
	environment:
	  - ZBX_HOSTNAME=Zabbix server 
	  - ZBX_SERVER_HOST=zabbix-server-mysq 
	  - ZBX_SERVER_PORT=10051
	networks:
	  - zabbix_net
networks
   zabbix_net:
   driver:bridge
volumes:
   zabbix-server-vol:
	 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM