Zabbix-(二) 使用docker部署


Zabbix-(二)使用docker部署

一.前言

前文記錄了在服務器上搭建zabbix平台,本文記錄使用docker部署zabbix 4.4

准備

  • Centos7.6 虛擬機,並安裝了docker 版本為18.09.6

二.docker部署

​ 可以通過拉取官方鏡像,修改啟動參數,部署zabbix-server-mysql、zabbix-web-nginx-mysql、zabbix-web-nginx-mysql、zabbix-agent模塊。本文記錄拉取各個模塊的鏡像,並啟動容器部署。

​ 除此之外,也可以拉取zabbix-appliance鏡像,進行部署,該鏡像內置了Mysql數據庫、Zabbix server、基於Nginx和Java gateway的Zabbix web頁面。可以參考官方部署示例:通過Zabbix appliance部署

1.官方鏡像

各模塊鏡像地址:

zabbix官方所有鏡像地址

2.容器部署

  1. mysql部署

    注:如果已有數據庫,那么可以省去這個步驟

    docker run --name mysql-server -t \
          -e MYSQL_DATABASE="zabbix" \
          -e MYSQL_USER="zabbix" \
          -e MYSQL_PASSWORD="zabbix" \
          -e MYSQL_ROOT_PASSWORD="root" \
          -d mysql:8.0 \
          --character-set-server=utf8 --collation-server=utf8_bin
    
  2. zabbix java gateway部署

    docker run --name zabbix-java-gateway -t \
          -d zabbix/zabbix-java-gateway:centos-4.4-latest
    
  3. zabbix-server-mysql部署

    ​ 這里link了上面部署的mysql容器和zabbix java gateway容器,並且指定數據庫相關參數,和修改時區。更多的參數可以參考dockerhub zabbix-server-msql啟動參數 以及 zabbix-server 4.4官方參數

    注:如果啟動日志無法連接到mysql,可以查看部署問題

    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" \
          -e MYSQL_PORT="3306" \
          -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
          -e ZBX_TIMEOUT="20" \
          -e PHP_TZ="Asia/Shanghai" \
          -v /etc/localtime:/etc/localtime \
          --link zabbix-java-gateway:zabbix-java-gateway \
          --link mysql-server:mysql \
          -p 10051:10051 \
          -d zabbix/zabbix-server-mysql:centos-4.4-latest
    
  4. zabbix-web-nginx-mysql部署

    需要配置數據庫相關參數,並暴露容器80端口供外部18080端口訪問

    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" \
          -e MYSQL_PORT="3306" \
          -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
          -e ZBX_SERVER_HOST="zabbix-server-mysql" \
          -e PHP_TZ="Asia/Shanghai" \
          -v /etc/localtime:/etc/localtime \
          --link zabbix-server-mysql:zabbix-server-mysql \
          --link mysql-server:mysql \
          -p 18080:80 \
          -d zabbix/zabbix-web-nginx-mysql:centos-4.4-latest
    
  5. zabbix-agent部署

    docker run --name zabbix-agent \
               -e ZBX_HOSTNAME="zabbix-server-mysql" \
               -e ZBX_SERVER_HOST="zabbix-server-mysql" \
               -v /etc/localtime:/etc/localtime \
               -p 10050:10050 \
               --link zabbix-server-mysql:zabbix-server-mysql \
               -d zabbix/zabbix-agent:centos-4.4-latest
    

三.訪問zabbix界面

訪問 http://192.168.152.140:18080/

四.其他

部署問題

  1. 無法連接到mysql,zabbix-server-mysql和zabbix-web-nginx-mysql容器打印日志

    **** MySQL server is not available. Waiting 5 seconds...
    

    原因:由於mysql鏡像使用的是mysql 8.0,而zabbix-server-mysql和zabbix-web-nginx-mysql鏡像中安裝的mysql-client是5版本的,所以這兩個容器連接mysql時會報以下錯誤

    ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
    

    解決:修改zabbix賬號

    # 進入mysql-server容器
    docker exec -it mysql-server /bin/bash -c 'mysql -uroot -proot'
    
    # 修改zabbix賬號
    ALTER USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password BY 'zabbix';
    


免責聲明!

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



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