博文 | 如何通過Docker實(shí)現(xiàn)自動擴(kuò)容Zabbix監(jiān)控平臺?

      網(wǎng)友投稿 864 2025-04-03

      本文介紹新的Zabbix高可用性的方法,并討論在使用Docker Swarm、Docker、Gitlab和CI/CD等技術(shù)實(shí)現(xiàn)Zabbix時所面臨的挑戰(zhàn)。


      本文是2020Zabbix全球峰會演講主題,感謝譯者Geekwolf。

      目錄

      一 Zabbix項(xiàng)目需求

      二 高可用思路

      01 HAProxy

      02 NFS共享

      03 Docker和Docker Swarm

      04 反向代理Traefik

      三 編排Compose文件并部署

      01 反向代理

      02 Zabbix Server

      03 前端

      04 部署

      五 Gitlab CI/CD

      六 總結(jié)

      一 Zabbix項(xiàng)目需求

      第一次使用Docker部署Zabbix是一個挑戰(zhàn),Zabbix環(huán)境需要滿足一下要求:

      博文 | 如何通過Docker實(shí)現(xiàn)自動擴(kuò)容Zabbix監(jiān)控平臺?

      NVPS(每秒寫入新值數(shù)量)超過3000+

      具備容錯能力

      具備彈性

      可以水平擴(kuò)容環(huán)境

      安裝Zabbix有五種方法: 使用包安裝、編譯、Docker部署、云或設(shè)備。我們使用虛擬機(jī)或者物理服務(wù)器直接安裝Zabbix。在這種情況下,有必要安裝并更新操作系統(tǒng)以提高性能。然后在安裝Zabbix,備份配置文件和數(shù)據(jù)庫。

      但是,在這種方案中,當(dāng)Zabbix服務(wù)器或者Zabbix前端關(guān)閉時,服務(wù)將不可用,通常解決方案是人工干預(yù)重啟或從備份中恢復(fù)重建新實(shí)例。

      為了創(chuàng)建一個更加智能的環(huán)境,我們可以使用一些標(biāo)準(zhǔn)的解決方案如Corosync和Pacemaker。但是,對于Zabbix高可用性建設(shè)有更好的解決方案。

      二 高可用新思路

      Zabbix可以使用一下技術(shù)進(jìn)行部署,例如:

      Docker

      Docker Swarm

      反向代理Traefik

      Git

      CI/CD

      最初,Zabbix監(jiān)控平臺部署,被劃分成多個組件:

      01 HAProxy

      HAProxy負(fù)責(zé)接收請求并轉(zhuǎn)發(fā)定向到Docker Swarm集群節(jié)點(diǎn)。因此,每次請求Zabbix前端,都會先將請求發(fā)到HAProxy,HAProxy檢測后端服務(wù),并將請求轉(zhuǎn)發(fā)定向到后端可用的節(jié)點(diǎn)。如果某個節(jié)點(diǎn)不可用,HAProxy將不再向這些節(jié)點(diǎn)發(fā)送請求。

      HAProxy配置(haproxy.cfg)

      使用HAProxy配置負(fù)載均衡器時,需要定義兩個類型的節(jié)點(diǎn):前端節(jié)點(diǎn)和后端節(jié)點(diǎn)。這里以Traefik服務(wù)為例進(jìn)行說明:HAProxy監(jiān)聽前端節(jié)點(diǎn)的連接。

      —在前端,配置端口以接收請求,并將后端與之關(guān)聯(lián)

      frontend traefik mode http bind 0.0.0.0:80 option forwardfor monitor-uri /health default_backend backend_traefik

      —在后端,配置定義安歇服務(wù)正在使用traefic服務(wù)、檢查模式、運(yùn)行服務(wù)的IP和端口

      backend backend_traefik mode http cookie Zabbix prefix server DOCKERHOST1 10.250.6.52:8080 cookie DOCKERHOST1 check server DOCKERHOST2 10.250.6.53:8080 cookie DOCKERHOST2 check server DOCKERHOST3 10.250.6.54:8080 cookie DOCKERHOST3 check stats admin if TRUE option tcp-check

      —我們還可以定義Zabbix服務(wù)器可以運(yùn)行的位置。在這里,我們只有一個Zabbix服務(wù)器容器在運(yùn)行

      frontend zabbix_server mode tcp bind 0.0.0.0:10051 default_backend backend_zabbix_server backend backend_zabbix_server mode tcp server DOCKERHOST1 10.250.6.52:10051 check server DOCKERHOST2 10.250.6.53:10051 check server DOCKERHOST3 10.250.6.54:10051 check stats admin if TRUE option tcp-check

      02 NFS共享

      NFS服務(wù)器負(fù)責(zé)將存儲的文件映射到容器中。

      配置安裝NFS

      NFS服務(wù)的配置

      mkdir /data/data-docker vim /etc/exports /data/data-docker/ *(rw,sync,no_root_squash,no_subtree_check)

      NFS客戶端配置

      vim /etc/fstab :/data/data-docker /mnt/data-docker nfs defaults 0 0

      03 Docker和Docker Swarm

      Docker和Docker Swarm負(fù)責(zé)運(yùn)行和編排容器。Swarm由一個或多個節(jié)點(diǎn)組成,集群可用分為兩類:

      管理節(jié)點(diǎn):負(fù)責(zé)維護(hù)集群狀態(tài)、調(diào)度及為Swarm模式提供HTTP API服務(wù)

      工作節(jié)點(diǎn):是Docker引擎的實(shí)例,為了執(zhí)行容器

      04 反向代理Traefik

      反向代理是該方案當(dāng)中另一個重要組件,負(fù)責(zé)接收HTTP和HTTPS請求,并轉(zhuǎn)發(fā)重定向到后端可用的容器。本方案中,有三個Traefik容器。反向代理可以使用Nginx,也可以使用Traefik。

      三 編排Compose文件并部署

      編寫文件docker-compose.yml——定義服務(wù)、網(wǎng)絡(luò)和卷的YAML文件。在這個文件中,我們決定使用哪個Zabbix鏡像、容器將連接到哪個網(wǎng)絡(luò)、服務(wù)名稱以及其他必要配置。

      01 反向代理

      下面是使用Traefik配置的反向代理示例:

      traefik: image: traefik:v2.2.8 deploy: placement: constraints: - node.role == manager replicas: 1 restart_policy: condition: on-failure labels: # Dashboard traefik - "traefik.enable=true" - "traefik.http.services.justAdummyService.loadbalancer.server.port=1337" - "traefik.http.routers.traefik.tls=true" - "traefik.http.routers.traefik.rule=Host(`zabbix-traefik.mydomain`)" - "traefik.http.routers.traefik.service=api@internal"

      參數(shù)說明:

      traefik: — 服務(wù)名字(第一行)

      image: — 定義使用什么鏡像

      deploy: — 部署的創(chuàng)建規(guī)則

      constraints: — 約束條件

      replicas: — 給服務(wù)創(chuàng)建多少副本

      restart_policy: — 如果服務(wù)有問題,使用什么策略

      labels: — 為traefik定義標(biāo)簽,包括調(diào)用服務(wù)的規(guī)則

      配置認(rèn)證和HTTP跳轉(zhuǎn)HTTPS

      # Auth Dashboard - "traefik.http.routers.traefik.middlewares=traefik-auth" - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:" # Redirect all HTTP to HTTPS permanently - "traefik.http.routers.http_catchall.rule=HostRegexp(`{any:.+}`)" - "traefik.http.routers.http_catchall.entrypoints=web" - "traefik.http.routers.http_catchall.middlewares=https_redirect" - "traefik.http.middlewares.https_redirect.redirectscheme.scheme=https" - "traefik.http.middlewares.https_redirect.redirectscheme.permanent=true"

      最后,我們定義在容器啟動后要執(zhí)行的命令:

      command: - "--api=true" - "--log.level=INFO" - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.file.directory=/etc/traefik/dynamic" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443"

      02 Zabbix Server

      Zabbix服務(wù)器配置可以在這個環(huán)境中定義——Zabbix服務(wù)器的名稱、鏡像、操作系統(tǒng)等。

      zabbix-server: image: zabbix/zabbix-server-mysql:centos-5.0-latest env_file: - ./envs/zabbix-server/common.env networks: - "monitoring-network" volumes: - /mnt/data-docker/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts:ro - /mnt/data-docker/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts:ro ports: - "10051:10051" deploy: <<: *template-deploy labels: - "traefik.enable=false"

      在本例中,我們可以使用Zabbix 5.0。例如,在這里,我們可以定義數(shù)據(jù)庫地址、數(shù)據(jù)庫用戶名、將要啟動的輪詢程序數(shù)量、外部腳本和警報腳本的路徑以及其他選項(xiàng)。

      在本例中,我們使用兩個卷——用于外部腳本和必須存儲在NFS服務(wù)器中的警報腳本。

      對于這個Zabbix,服務(wù)器traefik沒有啟用。

      03 Zabbix 前端

      對于前端,我們有另外一個選擇,使用Zabbix鏡像:

      zabbix-frontend: image: zabbix/zabbix-web-nginx-mysql:alpine-5.0.1 env_file: - ./envs/zabbix-frontend/common.env networks: - "monitoring-network" deploy: <<: *template-deploy replicas: 5 labels: - "traefik.enable=true" - "traefik.http.routers.zabbix-frontend.tls=true" - "traefik.http.routers.zabbix-frontend.rule=Host(`frontend.domain`)" - "traefik.http.routers.zabbix-frontend.entrypoints=web" - "traefik.http.routers.zabbix-frontend.entrypoints=websecure" - "traefik.http.services.zabbix-frontend.loadbalancer.server.port=8080"

      這里,5個副本意味著我們可以開始5個Zabbix前端。這可以用于更廣泛的環(huán)境,這也意味著我們有5個容器和5個連接。

      在這里,為了訪問前端,我們可以使用’ front '。域的名字。如果我們使用不同的名稱,將無法訪問前端。

      5個副本,意味著我們有5個Zabbix 前段節(jié)點(diǎn)或容器;我們可以使用frontend.domain來訪問前端。負(fù)載均衡器定義了容器監(jiān)聽的端口。

      04 部署

      到目前為止,部署都是手動完成的。你需要連接到一個具有Docker群管理功能的服務(wù),進(jìn)入NFS目錄,并部署服務(wù):

      # docker stack deploy -c docker-compose.yaml zabbix

      其中-c定義compose文件名和Stack名字:zabbix。

      五 Gitlab CI/CD

      使用CI/CD,不再需要手動運(yùn)行來創(chuàng)建映像和部署服務(wù)。

      1.為每個組件分別創(chuàng)建一個倉庫:

      Zabbix Server

      Frontend Web

      Zabbix Proxy

      2.啟用Piplines

      3.創(chuàng)建.gitlab-ci.yml文件

      六 總結(jié)

      如果Zabbix組件停止,Docker Swarm會自動啟動一個新的服務(wù)或容器

      不需要連接到終端來啟動環(huán)境

      部署簡單

      管理維護(hù)簡單

      Docker Zabbix

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:利用Word2007制作簡歷最常見三大失誤概述(熟練操作word,應(yīng)該在簡歷上怎么寫)
      下一篇:分配生產(chǎn)車間制造費(fèi)用(分配生產(chǎn)車間材料費(fèi)用)
      相關(guān)文章
      亚洲综合色区在线观看| 精品亚洲一区二区三区在线观看| 亚洲精品在线免费观看| 亚洲一区二区三区免费在线观看 | 亚洲VA中文字幕不卡无码| 国产成人精品日本亚洲专| 亚洲午夜久久久久久久久久 | 亚洲色偷偷偷鲁综合| 国产亚洲自拍一区| 国产AV无码专区亚洲AV麻豆丫| 亚洲av福利无码无一区二区| 亚洲?V无码乱码国产精品| 亚洲av乱码一区二区三区香蕉| 亚洲精品一区二区三区四区乱码| 亚洲精品人成电影网| 亚洲国产精品网站久久| 久久亚洲成a人片| 久久亚洲精精品中文字幕| 亚洲人成图片小说网站| 亚洲精品你懂的在线观看| 亚洲av无码不卡私人影院| 亚洲国产成人精品91久久久| 亚洲色婷婷综合开心网| 亚洲伊人久久大香线蕉综合图片| 亚洲精品无码专区2| 噜噜综合亚洲AV中文无码| 亚洲 综合 国产 欧洲 丝袜 | 亚洲午夜精品国产电影在线观看| 亚洲免费观看网站| 亚洲色精品三区二区一区| 亚洲黄色免费在线观看| 久久久久亚洲精品美女| 亚洲精品视频在线免费| 亚洲av永久无码精品三区在线4 | 亚洲国产精品成人综合色在线| 亚洲人成777在线播放| 亚洲七久久之综合七久久| 精品亚洲av无码一区二区柚蜜| 亚洲国产成人爱av在线播放 | 亚洲日韩精品A∨片无码加勒比| 色窝窝亚洲av网|