前文記錄了在服務器上搭建zabbix平臺,本文記錄使用docker部署zabbix 4.4java
能夠經過拉取官方鏡像,修改啓動參數,部署zabbix-server-mysql、zabbix-web-nginx-mysql、zabbix-web-nginx-mysql、zabbix-agent模塊。本文記錄拉取各個模塊的鏡像,並啓動容器部署。mysql
除此以外,也能夠拉取zabbix-appliance鏡像,進行部署,該鏡像內置了Mysql數據庫、Zabbix server、基於Nginx和Java gateway的Zabbix web頁面。能夠參考官方部署示例:經過Zabbix appliance部署nginx
各模塊鏡像地址:web
mysql部署docker
注:若是已有數據庫,那麼能夠省去這個步驟shell
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
zabbix java gateway部署數據庫
docker run --name zabbix-java-gateway -t \ -d zabbix/zabbix-java-gateway:centos-4.4-latest
zabbix-server-mysql部署centos
這裏link了上面部署的mysql容器和zabbix java gateway容器,而且指定數據庫相關參數,和修改時區。更多的參數能夠參考dockerhub zabbix-server-msql啓動參數 以及 zabbix-server 4.4官方參數bash
注:若是啓動日誌沒法鏈接到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
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
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
訪問 http://192.168.152.140:18080/
沒法鏈接到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';