Zabbix4.4(一)Docker安裝zabbix(解決Zabbix agent is not available)

實驗環境

[root@zabbix_server ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

一、Docker

1、安裝

[root@zabbix_server ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@zabbix_server ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@zabbix_server ~]# yum install -y docker-ce docker-ce-cli containerd.io

2、啓動

[root@zabbix_server ~]# systemctl start docker
[root@zabbix_server ~]# systemctl enable  docker

二、Docker安裝zabbix的兩種方式

Zabbix官網手冊:https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

1、直接使用docker run示例,官網提供了三個不同示例


2、使用docker-compose命令運行yaml腳本,本文主要也是說明這個。這個命令將會爲每個 Zabbix 組件下載最新的 Zabbix 4.0 鏡像,並以 detach 模式運行

三、Docker Compose

GitHub官網:https://github.com/docker/compose/releases

1、安裝docker-compose

[root@zabbix_server ~]# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose   
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    495      0 --:--:--  0:00:01 --:--:--   496
100 15.4M  100 15.4M    0     0   177k      0  0:01:28  0:01:28 --:--:--  115k

#給二進制文件執行權限
[root@zabbix_server ~]# chmod +x /usr/local/bin/docker-compose

#查看版本
[root@zabbix_server ~]# docker-compose --version
docker-compose version 1.24.1, build 4667896b

2、GitHub下載腳本,這裏選擇了master節點下載

3、創建一個存放目錄,把下載所有以點開頭的環境變量文件和一個yaml文件上傳到zabbix_server服務器(因爲實驗系統是centos,所以選擇了docker-compose_v3_centos_mysql_latest.yaml,根據需求參考)

[root@zabbix_server ~]# mkdir  zabbix
[root@zabbix_server ~]# cd zabbix/

4、docker-compose_v3_centos_mysql_latest.yaml還可以根據需求進一步優化

本文選擇安裝:zabbix-server、zabbix-web-apache-mysql、zabbix-agent、zabbix-snmptraps、mysql-server

注意:在每個基礎鏡像下添加restart: always,要不容器退出之後無法自動啓動

[root@zabbix_server zabbix]# vim docker-compose_v3_centos_mysql_latest.yaml
version: '3.5'
services:
 zabbix-server:
  image: zabbix/zabbix-server-mysql:centos-latest	#基礎鏡像
  restart: always	#指定容器退出後的重啓策略爲始終重啓。該命令對保持服務始終運行十分有效,在生產環境中推薦配置爲always或者unless-stopped。
  ports:
   - "10051:10051"	#暴露端口
  volumes:
   - /etc/localtime:/etc/localtime:ro	#時間,只讀模式
   - /etc/timezone:/etc/timezone:ro 	#時區,只讀模式
   - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro	#映射數據卷
   - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
   - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
   - ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
  links:		#容器之間建立互聯(將刪除,不推薦使用)
   - mysql-server:mysql-server	#第一個mysql-server是要鏈接的容器名稱,第二個mysql-server是別名
  ulimits:		#指定容器的 ulimits 限制值
   nproc: 65535
   nofile:
    soft: 20000
    hard: 40000
  deploy:		#僅用於Swarm mode
   resources:
    limits:
      cpus: '0.70'
      memory: 1G
    reservations:
      cpus: '0.5'
      memory: 512M
  env_file:			#從文件中獲取環境變量,可以爲單獨的文件路徑或列表
   - .env_db_mysql	#這些就是剛纔上傳.開頭的隱藏文件
   - .env_srv
  secrets:			#存儲敏感數據,例如 mysql 服務密碼
   - MYSQL_USER
   - MYSQL_PASSWORD
   - MYSQL_ROOT_PASSWORD
  user: root
  depends_on:		#解決容器的依賴、啓動先後的問題。以下會先啓動mysql-server和zabbix-snmptraps,再啓動zabbix-server
   - mysql-server
   - zabbix-snmptraps
  networks:			#配置容器連接的網絡
   zbx_net_backend:
     aliases:
      - zabbix-server
      - zabbix-server-mysql
      - zabbix-server-centos-mysql
      - zabbix-server-mysql-centos
   zbx_net_frontend:
#  devices:
#   - "/dev/ttyUSB0:/dev/ttyUSB0"
  stop_grace_period: 30s
  sysctls:			#配置容器內核參數
   - net.ipv4.ip_local_port_range=1024 65000
   - net.ipv4.conf.all.accept_redirects=0
   - net.ipv4.conf.all.secure_redirects=0
   - net.ipv4.conf.all.send_redirects=0
  labels:			#爲容器添加 Docker 元數據(metadata)信息。例如可以爲容器添加輔助說明信息
   com.zabbix.description: "Zabbix server with MySQL database support"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-server"
   com.zabbix.dbtype: "mysql"
   com.zabbix.os: "centos"

 zabbix-web-apache-mysql:
  image: zabbix/zabbix-web-apache-mysql:centos-latest
  restart: always
  ports:
   - "80:80"
   - "443:443"
  links:
   - mysql-server:mysql-server
   - zabbix-server:zabbix-server
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - /etc/timezone:/etc/timezone:ro
   - ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
  deploy:
   resources:
    limits:
      cpus: '0.70'
      memory: 512M
    reservations:
      cpus: '0.5'
      memory: 256M
  env_file:
   - .env_db_mysql
   - .env_web
  secrets:
   - MYSQL_USER
   - MYSQL_PASSWORD
  user: root
  depends_on:
   - mysql-server
   - zabbix-server
  healthcheck:
   test: ["CMD", "curl", "-f", "http://localhost"]
   interval: 10s
   timeout: 5s
   retries: 3
   start_period: 30s
  networks:
   zbx_net_backend:
    aliases:
     - zabbix-web-apache-mysql
     - zabbix-web-apache-centos-mysql
     - zabbix-web-apache-mysql-centos
   zbx_net_frontend:
  stop_grace_period: 10s
  sysctls:
   - net.core.somaxconn=65535
  labels:
   com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-frontend"
   com.zabbix.webserver: "apache2"
   com.zabbix.dbtype: "mysql"
   com.zabbix.os: "centos"

 zabbix-agent:
  image: zabbix/zabbix-agent:centos-latest
  restart: always
  ports:
   - "10050:10050"
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - /etc/timezone:/etc/timezone:ro
   - ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
  links:
   - zabbix-server:zabbix-server
  deploy:
   resources:
    limits:
      cpus: '0.2'
      memory: 128M
    reservations:
      cpus: '0.1'
      memory: 64M
   mode: global
  env_file:
   - .env_agent
  user: root
  privileged: true
  pid: "host"
  networks:
   zbx_net_backend:
    aliases:
     - zabbix-agent
     - zabbix-agent-passive
     - zabbix-agent-centos
  stop_grace_period: 5s
  labels:
   com.zabbix.description: "Zabbix agent"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-agentd"
   com.zabbix.os: "centos"
 zabbix-snmptraps:
  image: zabbix/zabbix-snmptraps:centos-latest
  ports:
   - "162:162/udp"
  volumes:
   - ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw
  deploy:
   resources:
    limits:
      cpus: '0.5'
      memory: 256M
    reservations:
      cpus: '0.25'
      memory: 128M
  user: root
  networks:
   zbx_net_frontend:
    aliases:
     - zabbix-snmptraps
   zbx_net_backend:
  stop_grace_period: 5s
  labels:
   com.zabbix.description: "Zabbix snmptraps"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "snmptraps"
   com.zabbix.os: "ubuntu"

 mysql-server:
  image: mysql:5.7
  restart: always
  command: [mysqld, --character-set-server=utf8, --collation-server=utf8_bin]
  volumes:
   - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
  env_file:
   - .env_db_mysql
  secrets:
   - MYSQL_USER
   - MYSQL_PASSWORD
   - MYSQL_ROOT_PASSWORD
  user: root
  stop_grace_period: 1m
  networks:
   zbx_net_backend:
    aliases:
     - mysql-server
     - zabbix-database
     - mysql-database

networks:
  zbx_net_frontend:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    ipam:
      driver: default
      config:
      - subnet: 172.16.238.0/24
  zbx_net_backend:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    internal: true
    ipam:
      driver: default
      config:
      - subnet: 172.16.239.0/24

secrets:
  MYSQL_USER:
    file: ./.MYSQL_USER
  MYSQL_PASSWORD:
    file: ./.MYSQL_PASSWORD
  MYSQL_ROOT_PASSWORD:
    file: ./.MYSQL_ROOT_PASSWORD

5、安裝zabbix

因爲是聯網下載鏡像所以會很慢。推薦搭建harbor鏡像倉庫,然後通過內網去下載

[root@zabbix_server zabbix]# docker-compose -f ./docker-compose_v3_centos_mysql_latest.yaml  up -d

6、查看容器

[root@zabbix_server zabbix]# docker ps -a
CONTAINER ID        IMAGE                                          COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
6499dc6b25a7        zabbix/zabbix-web-apache-mysql:centos-latest   "docker-entrypoint.sh"   16 minutes ago      Up 16 minutes (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   zabbix_zabbix-web-apache-mysql_1
9ce1cb810e49        zabbix/zabbix-agent:centos-latest              "/sbin/tini -- /usr/…"   16 minutes ago      Up 16 minutes                                                        zabbix_zabbix-agent_1
84bd8b1b6bcd        zabbix/zabbix-server-mysql:centos-latest       "/sbin/tini -- /usr/…"   16 minutes ago      Up 16 minutes             0.0.0.0:10051->10051/tcp                   zabbix_zabbix-server_1
af9a34a8172b        mysql:5.7                                      "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes                                                        zabbix_mysql-server_1
9204a93d9f76        zabbix/zabbix-snmptraps:centos-latest          "/usr/bin/supervisor…"   16 minutes ago      Up 16 minutes             0.0.0.0:162->162/udp                       zabbix_zabbix-snmptraps_1

四、解決Zabbix agent is not available

1、瀏覽器登錄http://192.168.14.216 如果無法登錄,先關閉主機防火牆

2、接口IP不能是127.0.0.1,127.0.0.1是宿主機的。

3、查看zabbix_zabbix-agent_1容器的IP地址

4、點擊進入Zabbix server修改IP地址,等會綠色就是正常

 

發佈了141 篇原創文章 · 獲贊 124 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章