頻道欄目
首頁 > 網絡 > 其他 > 正文

以Docker容器部署Zabbix監控踩坑篇-Heartnight();-51CTO博客

2020-05-14 12:53:47           
收藏   我要投稿

目前我需要一個zabbix的測試環境,這次我打算讓zabbix建立在容器上。首先你的系統上得有docker,這個不解釋了。

參考文檔:https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

容器版的zabbix需要以下幾個容器組件mysql zabbix-java-gateway zabbix-server-mysql zabbix-nginx數據庫當然可以有很多種選擇,不過官方的教程里使用的是mysql。

部署也有幾種方法,其中一種是一個容器里包含了所有的組件,只要運行一個容器就可以了。還有一種是組件統統為獨立的容器,然后將它們用--link命令將它們聯系起來。我是用的第二種。

命令只有四條,分別啟動四個容器。如果電腦中沒有這四個容器會自動下載它們。

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

其中MYSQL_PASSWORD和MYSQL_ROOT_PASSWORD是可以根據需要變動的,不過所有的容器密碼都得保持一致,否則頁面不能被打開。四個命令打完,zabbix就可以訪問了。默認賬戶和密碼是Admin和zabbix。由于不太熟悉docker所以犯了小錯誤。以下記錄一下首先,網頁訪問不了先檢查password是否填的一樣,除了zabbix-java-gateway之外,其他都需要同樣的密碼。再次檢查防火墻和selinux,將它們關閉或者放行(測試環境中關閉。)

錯誤:docker: Error response from daemon: Conflict. The container name "/zabbix-server-mysql" is already in use by container "9fc185bad94200043400345dfc9e8b2c41e198bae4e0c911744c3e1b47e64503". You have to remove (or rename) that container to be able to reuse that name.

第一次運行上面的命令之后,即使關閉了容器,如果要再次運行命令,也需要將之前的容器刪除,才能建立名字和之前相同的容器。

docker ps -a

docker stop <contianer.name> [ <contianer2.name> ...]
docker rm <contianer.name> [ <contianer2.name> ...]

其中contianer.name從docker ps -a命令中獲取,一定要-a參數,否則停止的容器是不顯示的。

錯誤:docker: Error response from daemon: driver failed programming external connectivity on endpoint zabbix-server-mysql (3149119198cc0398bf7df82e406938a97dd63afdcda6ec8d0467487e14b3046f): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 10051 -j DNAT --to-destination 172.17.0.4:10051 ! -i docker0: iptables: No chain/target/match by that name.

產生的原因是運行這條命令之前已經運行了映射目標端口的命令,網上說解決方法是重啟docker服務?雖然有效,但是我覺得太不靠譜了,如果有容器運行著,也重啟嗎?

就目前而言,zabbix已經運行了。zabbix-agent我不打算運行在容器里。作為快速生成的測試環境我覺得夠了,不過我覺得官網的代碼只不過是一種演示,mysql容器要是關掉了,或者掛掉了,那不是所有的數據都沒了?

相關TAG標簽
上一篇:docker鏡像的使用(docker鏡像命令)-楓雨-51CTO博客
下一篇:如何廉價的組裝192G內存的測試平臺-九叔-微軟私有云-51CTO博客
相關文章
圖文推薦
熱門新聞

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

加拿大28火车判定方法