天天看點

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

前面文章有提到過使用docker來快速拉起一個zabbix監控系統(詳見:如何使用docker快速部署一個zabbix監控系統),但是要一個個執行docker啟動指令去将對應的容器啟動。如果要配置參數多,那敲啟動指令就是一件讓人心累的事情。而且敲完後若沒有儲存啟動指令,後面的管理也是比較麻煩,并且如果容器數量較多,還要一個個手敲啟動指令,這就非常的不友善。

是以為了解決這個問題,并且更加高效的啟動一個zabbix監控系統。現在使用docker-compose這個容器編排工具來高效的啟動zabbix監控系統。

1. Docker-compose介紹

  • Docker-Compose項目是Docker官方的開源項目,負責實作對Docker容器叢集的快速編排, 并且提供了 scale (服務擴容) 的功能。
  • Docker-Compose将所管理的容器分為三層,分别是工程(project),服務(service)以及容器(container)。Docker-Compose運作目錄下的所有檔案(docker-compose.yml,extends檔案或環境變量檔案等)組成一個工程,若無特殊指定工程名即為目前目錄名。一個工程當中可包含多個服務,每個服務中定義了容器運作的鏡像,參數,依賴。一個服務當中可包括多個容器執行個體,Docker-Compose并沒有解決負載均衡的問題,是以需要借助其它工具實作服務發現及負載均衡。
  • Docker-Compose的工程配置檔案預設為docker-compose.yml,可通過環境變量COMPOSE_FILE或-f參數自定義配置檔案,其定義了多個有依賴關系的服務及每個服務運作的容器。
  • 使用一個Dockerfile模闆檔案,可以讓使用者很友善的定義一個單獨的應用容器。在工作中,經常會碰到需要多個容器互相配合來完成某項任務的情況。例如要實作一個Web項目,除了Web服務容器本身,往往還需要再加上後端的資料庫服務容器,甚至還包括負載均衡容器等。
  • Compose允許使用者通過一個單獨的docker-compose.yml模闆檔案(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。
  • Docker-Compose項目由Python編寫,調用Docker服務提供的API來對容器進行管理。是以,隻要所操作的平台支援Docker API,就可以在其上利用Compose來進行編排管理。

2.基礎文法

Docker-compose就是通過docker-compose.yaml檔案所定義的容器作為一個項目,進而進行docker容器的管理。下面就對docker-compose.yaml模闆檔案的常用基礎文法進行一個簡單的解釋

2.1. container_name

Compose 的容器預設名稱格式是:<項目名稱><服務名稱><序号>

雖然可以自定義項目名稱、服務名稱,但是如果你想完全控制容器的命名,可以使用這個标簽指定:

比如我要制定一個mysql容器的名為“mysql-test”,那麼

version: '3'

services:

mysql:

container_name: mysql-test

2.2. image

指定服務的鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 将會嘗試拉取這個鏡像。

比如我要制定一個mysql容器,使用的鏡像名為“mysql:8.0”,那麼

version: '3'

services:

mysql:

image: mysql:8.0

2.3. depends_on

在使用 Compose 時,最大的好處就是少打啟動指令,但是一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器,必然會因為容器依賴問題而啟動失敗。

例如在沒啟動資料庫容器的時候啟動了應用容器,這時候應用容器會因為找不到資料庫而退出,為了避免這種情況我們需要加入一個标簽,就是 depends_on,這個标簽解決了容器的依賴、啟動先後的問題。

比如我要先啟動一個MySQL,後啟動nginx,那麼

version: '3'

services:

nginx:

image: nginx:1.16.1

depends_on:

- mysql

mysql:

image: mysql:8.0

2.4. environment

這是設定鏡像的環境變量,直接将變量定義到鏡像裡面,這樣啟動容器時會自動讀取該環境變量

如啟動一個MySQL容器,要設定它的root初始化密碼為“123456”,那

version: '3'

services:

mysql:

image: mysql:8.0

environment:

MYSQL_ROOT_PASSWORD: 123456

2.5. ports

該參數是将主控端的端口映射到容器端口,進而在主控端通路對應的端口能通路到容器内。

如要講MySQL容器的3306端口映射到主控端的33060端口,那

version: '3'

services:

mysql:

image: mysql:8.0

ports:

- “33060:3306”

2.6. volumes

挂載一個目錄或者一個已存在的資料卷容器,可以直接使用 [HOST:CONTAINER] 這樣的格式,或者使用 [HOST:CONTAINER:ro] 這樣的格式,後者對于容器來說,資料卷是隻讀的,這樣可以有效保護主控端的檔案系統。

Compose的資料卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。

version: '3'

services:

mysql:

image: mysql:8.0

volumes:

- ./data:/var/lib/mysql

- /var/log/mysql:/var/log/mysql

3.安裝docker-compose

選擇對應版本下載下傳安裝包

https://github.com/docker/compose/releases?after=1.28.0

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

上傳到伺服器修改名稱并授權

mv docker-compose-x86 docker-compose

chmod +x docker-compose

測試

./docker-compose –v

安裝

mv docker-compose /usr/bin

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

4. 編寫zabbix監控系統的docker-compose.yaml檔案

version: '3.7'

services:

mysql:

container_name: mysql

image: mysql:latest

restart: always

environment:

MYSQL_DATABASE: zabbix

MYSQL_ROOT_PASSWORD: zabbix@2022

ports:

- "3306:3306"

volumes:

- /data/mysql:/var/lib/mysql

zabbix-server:

container_name: zabbix_server

image: zabbix/zabbix-server-mysql:latest

restart: always

depends_on:

- mysql

environment:

MYSQL_DATABASE: zabbix

MYSQL_PASSWORD: zabbix@2022

MYSQL_USER: root

DB_SERVER_HOST: 192.168.75.31

DB_SERVER_PORT: 3306

ports:

- "10051:10051"

volumes:

- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts

- /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts

zabbix-web:

container_name: zabbix_web

image: zabbix/zabbix-web-nginx-mysql:latest

restart: always

depends_on:

- mysql

- zabbix_server

environment:

MYSQL_DATABASE: zabbix

MYSQL_PASSWORD: zabbix@2022

MYSQL_USER: root

DB_SERVER_HOST: 192.168.75.31

DB_SERVER_PORT: 3306

ZBX_SERVER_HOST: 192.168.75.31

ZBX_SERVER_PORT: 10051

ports:

- "8080:8080"

zabbix-agent:

container_name: zabbix_agent

image: zabbix/zabbix-agent:latest

restart: always

depends_on:

- mysql

- zabbix_server

environment:

ZBX_HOSTNAME: 192.168.75.31

ZBX_SERVER_HOST: 172.18.0.1

ports:

- "10050:10050"

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

5. 啟動zabbix監控系統

别忘了安裝docker!

編寫好zabbix監控系統的docker-compose.yaml檔案後,就可以啟動系統了

Docker-compose up –d

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

如圖所示,已成功啟動

6.驗證監控系統

我這邊web端口映射為主控端的18080,是以通路zabbix界面,那就是IP+18080

預設的賬号密碼:

Admin

zabbix

Zabbix技術分享——使用docker-compose快速部署zabbix監控系統

如圖,成功通路。

這一期的Zabbix技術内容到這就結束了。我是樂維IT君,專注運維技術分享,更多Zabbix技術及其他運維内容,還可以檢視我的往期内容,zabbix服務,zabbix配置,zabbix部署等zabbix服務解決方案。

繼續閱讀