我相信大家都已經會再物理機上跑zabbix並且監控了,那么有沒有想過在docker中跑zabbix?下面咱們來看看如何在docker中搭建zabbix並且監控
部署環境
2台物理機機器:
zabbix-server:192.168.254.13
zabbix-agent:192.168.254.17
docker版本:Server Version: 19.03.1
zabbix版本:4.0
docker的鏡像網站(清華大學):https://mirrors.tuna.tsinghua.edu.cn/
安裝docker
cd /etc/yum.repos.d/ wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo yum install docker-ce -y
部署zabbix
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" \
-v /mysql/data/:/var/lib/mysql -v /mysql/conf/:/etc/my.cnf.d/ \
-d mariadb:10.2
2.部署zabbix-server
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_ROOT_PASSWORD="root" \ --link mysql-server:mysql \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest
3.部署apache web
docker run --name zabbix-web-apache-mysql -t \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_ROOT_PASSWORD="root" \ --link mysql-server:mysql \ --link zabbix-server-mysql:zabbix-server \ -p 80:80 \ -d zabbix/zabbix-web-apache-mysql:latest
4.打開瀏覽器
用戶名為Admin,密碼為zabbix
5.安裝zabbix客戶端agent
docker run --name zabbix-agent \ -e ZBX_HOSTNAME="self" \ -e ZBX_SERVER_HOST="192.168.254.13" \ -e ZBX_METADATA="client" \ -p 10050:10050 \ -d zabbix/zabbix-agent:latest
6.在zabbix server端開啟自動注冊規則
過一會我們就可以看到宿主機192.168.254.17上的容器已經被注冊進來了
最后說明一下上面用到的命令和參數解釋
說明一下各個參數的意義: --name:代表容器的名字,或者標簽 -e:代表要執行的環境變量 -p:代表映射的端口,:前面為宿主機,:后面代表容器的端口 -d:代表后台運行 -v:代表映射卷 --character-set-server:字符集 --collation-server:大小寫是否敏感 MYSQL_USER:代表zabbix用戶名 MYSQL_PASSWORD:代表zabbix的密碼 MYSQL_DATABASE:zabbix創建的數據庫名字為zabbix
MYSQL_ROOT_PASSWORD:代表數據庫root密碼,沒有指定USER是因為默認就是root
更多參數詳情請參照以下網站: mariadb10.2參考手冊:https://hub.docker.com/_/mariadb zabbix-server參考手冊:https://hub.docker.com/r/zabbix/zabbix-server-mysql zabbix-web-apache-mysql參考手冊:https://hub.docker.com/r/zabbix/zabbix-web-apache-mysql zabbix-agent參考手冊:https://hub.docker.com/r/zabbix/zabbix-agent
用docker-compose部署zabbix
編輯docker-compose.yaml文件
[root@master ~]# cat docker-compose.yaml version: '3.3' services: mysql-server: container_name: mariadb-server image: mariadb:10.2 restart: always environment: MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_ROOT_PASSWORD: root volumes: - /data/mysql/data/:/var/lib/mysql - /data/mysql/conf/:/etc/my.cnf.d/server.cnf zabbix-server: container_name: zabbix-server image: zabbix/zabbix-server-mysql restart: always environment: DB_SERVER_HOST: "mysql-server" MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix" MYSQL_ROOT_PASSWORD: "root" ports: - 10051:10051 links: - mysql-server zabbix-web: container_name: zabbix-web image: zabbix/zabbix-web-apache-mysql restart: always depends_on: - mysql-server - zabbix-server environment: DB_SERVER_HOST: "mysql-server" MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix" MYSQL_ROOT_PASSWORD: "root" ports: - 80:80 links: - mysql-server - zabbix-server
用docker-compose執行創建容器
#啟動docker-compose.yaml文件中定義的容器,並且是后台運行
[root@master ~]# docker-compose up -d
說明
docker-compose命令的用法
Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information
build 構建或重建服務 help 命令幫助 pause 暫停服務 exec 進入到一個docker容器的交互界面 kill 殺死容器 logs 顯示docker-compose.yaml文件中容器的輸出內容 ps 顯示啟動的容器 pull 拉取服務鏡像 restart 重啟服務 rm 刪除停止的容器 run 運行容器 scale 設置服務的容器數目 start 開啟服務 stop 停止服務 up 創建並啟動容器
config 測試docker-comose.yaml文件的語法是否ok
docker-compose.yaml文件中的語法參數說明
一個docker-compose.yaml文件大致分為:version,services,network
version
version可以是1,2,3這是大版本,還有小版本,比如1.0,2.2,3.3等,在定義yaml文件時必須制定version版本,每個版本的語法可能不太相同,可以參照文章下方給的官方文檔了解詳情
service
1.service中定義服務名稱,service的下一級定義服務名稱
version: '3.3' services: 服務名稱:
2.在服務名稱下一級標簽有container_name,image,restart,privileged,environment,volumes,ports,links等
container_name:定義容器名稱 image:鏡像名稱 restart restart: "no" #不重啟 restart: always #總是重啟 restart: on-failure #失敗時才重啟 restart: unless-stopped #除非停止 privileged:獲取最高權限 environment:設置系統環境變量 KEY1:VALUE1 KEY2:VALUE2 volumes 映射容器卷 - HOST_PATH:CONTAINER_PATH - HOST_PATH:CONTAINER_PATH ports: 映射容器端口 - HOST_PORT: CONTAINER_PORT links: 連接容器 - SERVICE_NAME depends_on:定義容器的先后順序 - zabbix-server - zabbix-web - mysql-server
想要查看更多docker-compose文件的語法格式請參照https://docs.docker.com/compose/compose-file/