banner
云野阁

云野阁

闲云野鹤,八方逍遥

docker部署zabbix6.4指南

任務目標#

  1. 在主機一上完成 docker 部署 zabbix6.4
  2. 在主機二上安裝 zabbix-agent2
  3. 使用主機一上的 zabbix 容器監控主機二的容器等業務

任務平台#

  1. 實體設備 --
  2. 操作系統:CentOS 7

部署指南#

任務 一#

  1. 安裝 docker(最新版)
#下載並安裝docker文件及依賴
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
#啟動docker並設置開機自啟
systemctl start docker  
systemctl enable docker
#查看版本
docker -v
  1. 配置防火牆所需的開放端口
# 放行nginx端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 放行zabbix agent端口
firewall-cmd --zone=public --add-port=10050/tcp --permanent
# 放行zabbix server端口
firewall-cmd --zone=public --add-port=10051/tcp --permanent
# 放行zabbix java gateway端口
firewall-cmd --zone=public --add-port=10052/tcp --permanent
# 放行mysql端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 放行snmptraps端口
firewall-cmd --zone=public --add-port=162/udp --permanent
# 重載防火牆
firewall-cmd --reload
#查看80端口是否開放
firewall-cmd --query-port=80/tcp
#查看所有放行的端口
firewall-cmd --zone=public --list-ports
  1. 拉取 zabbix 所需鏡像文件
#拉取安裝zabbix需要的docker鏡像
docker pull mysql:8.0
docker pull zabbix/zabbix-java-gateway:alpine-6.4-latest
docker pull zabbix/zabbix-server-mysql:alpine-6.4-latest
docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
  1. 創建專用於 Zabbix 組件容器網絡與所需容器

方案一:#

#創建專用於Zabbix組件容器的網絡
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

#啟動空的MySQ伺服器實例
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --network=zabbix-net \
      --restart=always \
      -d mysql:8.0 \
      --character-set-server=UTF8MB4 --collation-server=UTF8MB4_bin \
      --authentication_policy=mysql_native_password

#啟動Zabbix Java網關實例      
docker run --name zabbix-java-gateway -t \
      --network=zabbix-net \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.4-latest

#啟動Zabbix伺服器實例並將實例與創建的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="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --network=zabbix-net \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-6.4-latest

#啟動Zabbix Web界面,並將實例與創建的MySQL伺服器和Zabbix伺服器實例鏈接
docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --network=zabbix-net \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest

方案二:(推薦使用)#

#啟動空的MySQ伺服器實例
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --restart=always \
      -d mysql:8.0 \
      --character-set-server=UTF8MB4 --collation-server=UTF8MB4_bin \
      --authentication_policy=mysql_native_password

#啟動Zabbix Java網關實例      
docker run --name zabbix-java-gateway -t \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.4-latest

#啟動Zabbix伺服器實例並將實例與創建的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="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-6.4-latest

#啟動Zabbix Web界面,並將實例與創建的MySQL伺服器和Zabbix伺服器實例鏈接
docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
  1. 在其中一台的主機的 /etc/docker/daemon.json 文件中,加入如下內容:
#打開daemon.json文件
vi /etc/docker/daemon.json

#添加的內容
{
 "bip": "172.16.200.1/24"
}

#重啟docker服務
systemctl restart docker 

任務二#

在主機二上安裝 zabbix-agent2

在要監控的主機上安裝 zabbix agent2

步驟 1:Zabbix agent2 下載

https://www.zabbix.com/documentation/6.4/manual/installation/install_from_packages

rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-6.4-1.el7.noarch.rpm
yum clean all

步驟 2:b. 下載 Zabbix agent2

yum install zabbix-agent2 zabbix-agent2-plugin-* -y

步驟 3:啟動 Zabbix agent2

啟動 Zabbix agent2 進程並使其在系統啟動時啟動。

systemctl restart zabbix-agent2
systemctl enable zabbix-agent2

運行成功界面如下

1711208128881-1

1711208138487-4-1711208142767-7

安裝報錯總結#

1711208157423-9

  1. 進入 mysql 容器,輸入以下命令.
#進入sql界面
mysql -u root -p
#輸入該命令,解決問題
create database zabbix character set utf8 collate utf8_bin;
SET GLOBAL log_bin_trust_function_creators = 1;
  1. 安裝 zabbix 出現下圖情況解決方法

1711208164924-12

https://blog.csdn.net/ly4983/article/details/111029506

擴展 - docker-compose 部署 zabbix#

services:
  zabbix-db-mysql:
    image: mysql:9.0.1
    container_name: zabbix-db-mysql
    restart: always
    environment:
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@123
      - MYSQL_ROOT_PASSWORD=zabbix@123
      - TZ=Asia/Shanghai
    command: ["--character_set_server=utf8mb4", "--collation_server=utf8mb4_bin"]
    volumes:
      - /data/database/zabbix-mysql:/var/lib/mysql
    user: "0"
    ports:
      - 3306:3306
    networks:
      zabbix:
        ipv4_address: 172.20.20.10

  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:latest
    container_name: zabbix-java-gateway
    restart: always
    environment:
      - TZ=Asia/Shanghai
    user: "0"
    networks:
      zabbix:
        ipv4_address: 172.20.20.11

  zabbix-server-mysql:
    image:  zabbix/zabbix-server-mysql:latest
    container_name: zabbix-server-mysql
    restart: always
    environment:
      - DB_SERVER_HOST=zabbix-db-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@123
      - MYSQL_ROOT_PASSWORD=zabbix@123
      - ZBX_JAVAGATEWAY=zabbix-java-gateway
      - TZ=Asia/Shanghai
    user: "0"
    ports:
      - 10051:10051
    networks:
      zabbix:
        ipv4_address: 172.20.20.12

  zabbix-web-nginx-mysql:
    image:  zabbix/zabbix-web-nginx-mysql:latest
    container_name: zabbix-web-nginx-mysql
    restart: always
    environment:
      - ZBX_SERVER_HOST=zabbix-server-mysql
      - DB_SERVER_HOST=zabbix-db-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix@123
      - MYSQL_ROOT_PASSWORD=zabbix@123
      - ZBX_JAVAGATEWAY_ENABLE=true
      - ZBX_JAVAGATEWAYPORT=10052
      - PHP_TZ=Asia/Shanghai
    user: "0"
    ports:
      - 80:8080
    networks:
      zabbix:
        ipv4_address: 172.20.20.13

  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - ZBX_SERVER_HOST=172.20.20.12
      - ZBX_HOSTNAME=Zabbix server
    user: "0"
    ports:
      - 10050:10050
    networks:
      zabbix:
        ipv4_address: 172.20.20.14

networks:
 zabbix:
  driver: bridge
  ipam:
   config:
    - subnet: 172.20.20.0/24
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。