使用Docker 部署一套zabbix监控

概述

Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。

Zabbix 是一个企业级的开源分布式监控解决方案。

Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用。

Zabbix 是免费的。Zabbix 是在 GPL 通用公共许可证第 2 版下编写和分发的。这意味着它的源代码是免费分发的,可供公众使用。

部署 zabbix

下面部署所涉及到文件皆可在gitee仓库上获取

1.创建zabbix网络

docker network create  -d bridge  --subnet 192.168.1.0/16 --gateway 192.168.1.1  zabbix

2.启动mysql服务(使用外置可不执行)

如果使用的是外置数据库的话,下面服务所连接的数据库配置都记得修改

version: '3.5'
services:
  mysql-server:
    image: mysql:8.0
    restart: unless-stopped
    container_name: mysql-server
    # docker 容器安全验证
    security_opt:
      - seccomp:unconfined
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: zabbix
      TZ: Asia/Shanghai
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
      - --default-authentication-plugin=mysql_native_password
    volumes:
      - ./data:/var/lib/mysql:rw

networks:
  default:
    external:
      name: zabbix
cd mysql
docker-compose up -d

3.启动服务端

version: '3.5'
services:
  zabbix-server:
    restart: unless-stopped
    container_name: zabbix-server
    image: zabbix/zabbix-server-mysql:ubuntu-5.0-latest
    ports:
      - "10051:10051"
    volumes:
      - /etc/localtime:/etc/localtime:ro
#      - ./alertscripts:/usr/lib/zabbix/alertscripts:ro
#      - ./externalscripts:/usr/lib/zabbix/externalscripts:ro
#      - ./export:/var/lib/zabbix/export:rw
#      - ./modules:/var/lib/zabbix/modules:ro
#      - ./enc:/var/lib/zabbix/enc:ro
#      - ./ssh_keys:/var/lib/zabbix/ssh_keys:ro
#      - ./mibs:/var/lib/zabbix/mibs:ro
#      - ./snmptraps:/var/lib/zabbix/snmptraps:rw
    ulimits:
      nproc: 65535
      nofile:
        soft: 20000
        hard: 40000
    # depends_on:
    #  - zabbix-java-gateway
    #  - zabbix-snmptraps
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: zabbix
      # ZBX_JAVAGATEWAY: "zabbix-java-gateway"
      TZ: Asia/Shanghai
    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

# 有监控java服务的需求
#  zabbix-java-gateway:
#   restart: unless-stopped
#   container_name: zabbix-java-gateway
#   image: zabbix/zabbix-java-gateway:ubuntu-5.0-latest
#   profiles:
#    - full
#    - all
#   ports:
#    - "10052:10052"


#  zabbix-snmptraps:
#   restart: unless-stopped
#   container_name: zabbix-snmptraps
#   image: zabbix/zabbix-snmptraps:ubuntu-5.0-latest
#   profiles:
#    - full
#    - all
#   ports:
#    - "162:1162/udp"
#   volumes:
#    - ./snmptraps:/var/lib/zabbix/snmptraps:rw


networks:
  default:
    external:
      name: zabbix
cd zabbix-server
docker-compose up -d

4.启动web界面

version: '3.5'
services:
  zabbix-web:
    restart: unless-stopped
    container_name: zabbix-web
    image: zabbix/zabbix-web-nginx-mysql:ubuntu-5.0-latest
    ports:
      - "80:8080"
      - "443:8443"
    volumes:
      # zabbix 设置中文后会出现乱码,这里挂载字体替换默认的字体
      - './fonts/msyh.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf'
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: zabbix
      TZ: Asia/Shanghai
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8080/" ]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 30s
    sysctls:
      - net.core.somaxconn=65535

networks:
  default:
    external:
      name: zabbix
cd zabbix-web
docker-compose up -d

5.启动客户端

version: '3.5'
services:
  zabbix-agent:
    restart: always
    container_name: zabbix-agent
    image: zabbix/zabbix-agent:ubuntu-5.0-latest
    privileged: true
    ports:
      - "10050:10050"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - './zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf'
      - '/:/rootfs'
      - '/var/run:/var/run'
    environment:
      # 正常来说,使用环境变量即可,不一定要挂载它的配置文件
      # 我这边是出现 zabbix 网关 192.168.1.1 请求不通过,
      # 试过许多方法没解决,无奈只能挂载配置文件
#      ZBX_HOSTNAME: "zabbix server"
#      ZBX_SERVER_HOST: zabbix-server
      TZ: Asia/Shanghai

networks:
  default:
    external:
      name: zabbix
cd zabbix-agent
docker-compose up -d

界面提示错误:
访问界面 http://localhost 发送错误报警如下:

在这里插入图片描述

解决方法:

将主机中的客户端名称和ip地址修改一下即可,当然它们在docker同一网络内,可以使用dns解析(照样要修改)

在这里插入图片描述

成果展示

在这里插入图片描述

在这里插入图片描述

参考文档

zabbix 帮助文档

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker是一种容器化技术,可以方便地部署和管理应用程序。Zabbix是一种流行的开源监控系统,可以监控服务器、网络设备和应用程序等。在Docker部署Zabbix监控集群可以提高系统的可靠性和可扩展性。 要部署Zabbix监控集群,需要先创建一个Docker镜像,其包含Zabbix Server和Zabbix Agent。可以使用Dockerfile文件来定义镜像的构建过程。然后,可以使用Docker Compose来定义和管理多个容器的部署和运行。 在Docker Compose文件,需要定义Zabbix Server和Zabbix Agent的容器,并指定它们的网络配置和环境变量。可以使用Docker Swarm来管理多个Docker节点,以实现高可用性和负载均衡。 最后,可以使用Zabbix Web界面来配置和管理监控项、触发器和报警等。通过Docker部署Zabbix监控集群,可以简化部署和管理过程,提高系统的可靠性和可扩展性。 ### 回答2: DockerZabbix都是开源软件,可在各种操作系统上部署使用Docker可以帮助我们简化部署和管理多个容器的过程,而Zabbix则是一种开源监控解决方案,能够对各种设备和应用程序进行监控、报警和分析。在Docker,我们可以利用容器来部署Zabbix监控集群,达到扩展和分布式监控的目的。 1. 首先,我们需要安装DockerDocker Compose。安装完成后,我们可以创建一个新的Zabbix监控服务的Docker镜像。为此,我们可以使用类似以下命令的Dockerfile: FROM zabbix/zabbix-server-pgsql:alpine-3.2-latest # Install additional packages RUN apk add --update \ supervisor \ nginx \ php7-fpm \ php7-json \ php7-mysqli \ php7-session \ php7-simplexml \ php7-xml \ php7-xmlrpc \ && rm -rf /var/cache/apk/* # Configure services COPY nginx.conf /etc/nginx/nginx.conf COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY php-fpm.ini /etc/php7/php-fpm.d/www.conf RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log COPY entrypoint.sh / EXPOSE 80 EXPOSE 10051/TCP ENTRYPOINT ["/entrypoint.sh"] CMD ["nginx", "-g", "daemon off;"] 其entrypoint.sh是一个脚本,用于检查是否已经创建数据库和zabbix配置文件,并自动执行启动脚本。该脚本如下: #!/bin/sh set -e if [ ! -d "/var/lib/zabbix/alertscripts" ]; then mkdir -p /var/lib/zabbix/alertscripts cp /usr/share/zabbix/alertscripts/* /var/lib/zabbix/alertscripts/ -r chown -R zabbix.zabbix /var/lib/zabbix/alertscripts fi if [ ! -d "/var/lib/zabbix/modules" ]; then mkdir -p /var/lib/zabbix/modules chown -R zabbix.zabbix /var/lib/zabbix/modules fi if [ ! -d "/etc/zabbix/web" ]; then mkdir -p /etc/zabbix/web cp /usr/share/zabbix/conf/* /etc/zabbix/web/ chown -R zabbix.zabbix /etc/zabbix/web fi if [ ! -f "/etc/zabbix/zabbix_server.conf" ]; then cp /usr/share/zabbix/conf/zabbix_server.conf /etc/zabbix/ chown -R zabbix.zabbix /etc/zabbix fi if [ ! -f "/var/lib/postgresql/data/zabbix.sql" ]; then chown postgres.postgres /var/lib/postgresql/data su -c "/usr/bin/pg_ctl -D /var/lib/postgresql/data start" postgres su -c "psql -c \"CREATE USER zabbix WITH PASSWORD 'zbxpass';\"" postgres su -c "createdb -O zabbix zabbix" postgres su -c "/usr/bin/pg_ctl -D /var/lib/postgresql/data stop" postgres fi exec "$@" 2. 然后,我们可以使用Docker Compose创建一个Zabbix监控集群。我们将使用Zabbix Server、Zabbix Agent以及PostgreSQL数据库容器。可以使用以下配置文件: version: '3' services: db: image: postgres:9.6 volumes: - db_data:/var/lib/postgresql/data environment: - POSTGRES_USER=zabbix - POSTGRES_PASSWORD=zbxpass - POSTGRES_DB=zabbix ports: - "5432:5432" networks: - zbx_net zabbix_server: build: . volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./supervisord.conf:/etc/supervisor/conf.d/supervisord.conf - ./php-fpm.ini:/etc/php7/php-fpm.d/www.conf - zabbix_data:/var/lib/zabbix environment: - DB_SERVER_HOST=db - DB_SERVER_PORT=5432 - POSTGRES_USER=zabbix - POSTGRES_PASSWORD=zbxpass - POSTGRES_DB=zabbix ports: - "80:80" - "10051:10051" depends_on: - db networks: - zbx_net zabbix_agent: image: zabbix/zabbix-agent2:alpine-3.13-latest environment: - ZBX_HOSTNAME=zabbix-agent networks: - zbx_net volumes: db_data: driver: local zabbix_data: driver: local networks: zbx_net: 3. 在保存Docker Compose配置文件后,您可以通过以下命令创建并启动Zabbix监控集群: docker-compose up -d 4. 容器启动后,可以访问Zabbix Web界面并使用默认凭据登录。默认用户名和密码分别为Admin和zabbix。接下来,您可以开始监控您的设备和应用程序。 综上所述,我们可以使用DockerDocker Compose来部署Zabbix监控集群。这种方法方便、可扩展和易于管理,能够让我们快速构建和部署一个强大的监控系统。 ### 回答3: Docker是一个开源的容器化应用平台,它可以帮助我们将应用程序和服务打包成一个容器,这样就可以更快速、更有效地部署和运行它们。而Zabbix是一款功能强大的监控软件,它可以帮助我们监测网络通信、服务器性能等。通过将Zabbix部署Docker容器,可以实现快速部署和升级。 在部署Zabbix集群之前,我们需要准备好Docker环境。首先,我们需要在主机上安装Docker Engine和Docker Compose。然后,我们需要创建一个Docker镜像,包含Zabbix Server和Zabbix Agent。可以使用Dockerfile文件来定义该镜像的构建过程。例如,我们可以通过以下方式构建Zabbix镜像: ```dockerfile FROM ubuntu:20.04 RUN apt-get update && apt-get -y install wget \ && wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb \ && dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb \ && rm -f zabbix-release_5.2-1+ubuntu20.04_all.deb \ && apt-get update \ && apt-get -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent mysql-client \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* EXPOSE 80 10050 CMD ["/bin/bash"] ``` 在这个Dockerfile,我们首先从Ubuntu官方镜像开始构建。然后,我们下载最新的Zabbix Release,并安装Zabbix Server、Zabbix Agent、Zabbix Web等软件包。最后,我们暴露了80和10050两个端口,并在容器启动时启动Bash shell。 接下来,我们需要使用Docker Compose来编排这个镜像的部署。以下是一个简单的docker-compose.yml文件的示例: ```yml version: '3.2' services: zabbix-db: image: mysql:5.7 volumes: - ./data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: zabbix MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix zabbix-server: build: . volumes: - ./zabbix-server.conf:/etc/zabbix/zabbix_server.conf environment: DB_SERVER_HOST: zabbix-db MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_DATABASE: zabbix ports: - 80:80 zabbix-agent: image: zabbix/zabbix-agent:latest environment: ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_PORT: 10051 ZBX_HOSTNAME: zabbix-agent ports: - 10050:10050 ``` 在这个docker-compose.yml文件,我们定义了3个容器服务,分别是: 1. zabbix-db:MySQL数据库容器服务,用于存储Zabbix Server的监控数据。 2. zabbix-server:Zabbix Server容器服务,包含Zabbix Server和Zabbix Web等组件。 3. zabbix-agent:Zabbix Agent容器服务,用于监控其他容器的性能指标。 在这个文件,我们还定义了一些环境变量和卷,以保证容器之间的数据共享。最后,我们将Zabbix Web的端口暴露给主机,以方便用户访问Zabbix监控界面。 在完成docker-compose.yml文件的编写后,我们可以使用以下命令来启动Zabbix集群: ```bash docker-compose up -d ``` 总之,使用Docker可以轻松地部署Zabbix监控集群,以帮助我们更好地监控和管理我们的应用程序和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值