Docker部署Zabbix+grafana监控平台

一、Zabbix介绍

1.1 Zabbix简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

1.2 Zabbix的优点

  • 自动发现服务器和网络设备

  • 底层自动发现(如自动发现多实例mysql、tomcat进程等)

  • 分布式的监控体系和集中式的web管理

  • 支持主动监控和被动监控模式

  • 支持多种操作系统linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD等

  • 高效的Agent支持linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,windows NT4.0,window2000等

  • 无Agent监控等多种监控方法(如:用SNMP协议监控路由或交换机、IPMI检测硬件温度等)

  • 安全的用户认证模式

  • 灵活的用户权限设置

  • 基于web的管理方法,支持自由的定义事件和邮件发送

  • 高水平的业务视图监控资源,支持日志审计

1.3 Zabbix各组件介绍

Zabbix-server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
Zabbix-mysql:专用于存储所有配置信息,以及由zabbix收集的数据;
Zabbix-web:zabbix的GUI接口,通常与server运行在同一台主机上;
Zabbix-proxy:可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往Server端;
Zabbix agent:部署在被监控主机上,负责收集本地数据并发往server或proxy端。

1.4 Zabbix架构图

Zabbix的各组件如下图所示,Zabbix各组件组成一个强大的监控系统。

在这里插入图片描述

二、grafana介绍

2.1 grafana简介

Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。

2.2 grafana特点

  • 灵活丰富的图形化选项
  • 可以混合多种风格
  • 支持白天和夜间模式
  • 多数据源

三、实践环境规划

实践环境规划

  • 宿主机操作系统版本
hostnameIP地址系统版本
jeven192.168.3.166centos 7.6
  • zabbix各组件版本
容器名称角色版本docker内部地址宿主机地址
mysql-serverzabbix数据库8.0172.66.10.11192.168.3.166
zabbix-server-mysqlzabbix服务端6.2.7172.66.10.12192.168.3.166
zabbix-agentzabbix-agent6.2.7172.66.10.20192.168.3.166
zabbix-web-nginx-mysqlzabbix的web服务6.2.7172.66.10.13192.168.3.166
zabbix-java-gateway监控java进程6.2.7172.66.10.10192.168.3.166
  • grafana版本
容器名称角色版本docker内部地址宿主机地址
zabbix-grafanagrafana9.3.2172.66.10.50192.168.3.166

四、检查本地docker环境

4.1 检查操作系统版本

[root@jeven zabbix]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 

4.2 检查docker版本

检查本地docker版本

[root@jeven zabbix]# docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:05:12 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:03:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

4.3 检查docker服务状态

检查docker服务是否正常启动

[root@jeven zabbix]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-03-13 17:43:40 CST; 1 weeks 1 days ago
     Docs: https://docs.docker.com
 Main PID: 117974 (dockerd)
    Tasks: 64
   Memory: 282.2M

4.4 检查docker compose版本

检查dockercompose版本

[root@jeven zabbix]# docker compose version
Docker Compose version v2.6.0

五、下载Zabbix相关镜像

在docker hub拉取Zabbix各组件镜像,如果镜像下载过慢,则检查下Docker的镜像加速是否配置。

docker pull mysql:8.0
docker pull zabbix/zabbix-server-mysql:centos-6.2.7
docker pull zabbix/zabbix-agent:centos-6.2.7
docker pull zabbix/zabbix-web-nginx-mysql:centos-6.2.7
docker pull zabbix/zabbix-java-gateway:centos-6.2.7
docker pull grafana/grafana:9.3.2

六、部署Zabbix+grafana监控系统

6.1 创建docker网络

单独创建一个docker网络,后面的zabbix各组件会在此Docker网络中。

 docker network create --driver bridge --subnet 172.66.10.0/24 --gateway 172.66.10.1 zabbix

6.2 创建部署目录

创建一个zabbix的部署目录,用于存放docker-compose.yaml文件,以及作为zabbix各组件的数据挂载目录。

mkdir -p /data/zabbix/ && cd /data/zabbix

6.3 编辑docker-compose.yaml文件

docker-compose.yaml部署文件内容如下:

version: "3"
services:
  mysql-server:
    image: mysql:8.0
    hostname: mysql-server
    container_name: mysql-server
    expose:
      - 3306
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=admin
      - MYSQL_ROOT_PASSWORD=admin
      - TZ="Asia/Shanghai"
    volumes:
      - /data/zabbix/mysql:/var/lib/mysql
    networks:
      zabbix:
        ipv4_address: 172.66.10.11
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:centos-6.2.7
    container_name: zabbix-java-gateway
    restart: always
#    volumes:
#      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    networks:
      zabbix:
        ipv4_address: 172.66.10.10
  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql:centos-6.2.7
    container_name: zabbix-server-mysql
    restart: always
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
#      - /etc/timezone:/etc/timezone:ro
      - /data/zabbix/zabbix:/usr/lib/zabbix
      - /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
    environment:
      - DB_SERVER_HOST=mysql-server
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=root
      - MYSQL_PASSWORD=admin
      - MYSQL_ROOT_PASSWORD=admin
      - ZBX_JAVAGATEWAY=zabbix-java-gateway
      - TZ=Asia/Shanghai
    depends_on:
      - mysql-server
      - zabbix-java-gateway
    links:
      - mysql-server:mysql
    ports:
      - 10051:10051
    networks:
      zabbix:
        ipv4_address: 172.66.10.12
  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:centos-6.2.7
    container_name: zabbix-web-nginx-mysql
    restart: always
    volumes:
      -  /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    environment:
      - PHP_TZ=Asia/Shanghai
      - DB_SERVER_HOST=mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=root
      - MYSQL_PASSWORD=admin
      - MYSQL_ROOT_PASSWORD=admin
      - TZ=Asia/Shanghai
      - ZBX_SERVER_HOST=zabbix-server-mysql
      - ZBX_SERVER_PORT=10051
      - ZBX_SERVER_NAME=zabbix-server-mysql
    expose:
      - 8080
      - 8443
    links:
      - mysql-server:mysql
      - zabbix-server-mysql:zabbix-server-mysql
      - zabbix-java-gateway:zabbix-java-gateway
    depends_on:
     - mysql-server
     - zabbix-java-gateway
     - zabbix-server-mysql
    ports:
     - 8080:8080
     - 8443:8443
    networks:
      zabbix:
        ipv4_address: 172.66.10.13
  zabbix-agent:
    image: zabbix/zabbix-agent:centos-6.2.7
    environment:
      - ZBX_HOSTNAME=zabbix-agent
      - ZBX_SERVER_HOST=172.66.10.12
      - ZBX_SERVER_PORT=10051
#    volumes:
#      - /data/zabbix/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
#      - /data/zabbix/scripts/:/etc/zabbix/scripts/
    expose:
      - 10050
    networks:
      zabbix:
        ipv4_address: 172.66.10.20

  grafana:
    image: grafana/grafana:9.3.2
    container_name: zabbix-grafana
    environment:
     TZ: Asia/Shanghai
     GF_INSTALL_PLUGINS: alexanderzobnin-zabbix-app
    volumes:
      - grafana-data:/var/lib/grafana
      - grafana-conf:/etc/grafana
    ports:
      - "3000:3000"
    networks:
      zabbix:
        ipv4_address: 172.66.10.50
    restart: always


networks:
 zabbix:
    external: true
    name: zabbix


volumes:
 grafana-data:
 grafana-conf:

编辑docker-compose.yaml文件,一键部署Zabbix+grafana平台。

[root@jeven zabbix]# docker compose up -d
[+] Running 8/8
 ⠿ Volume "zabbix_grafana-data"      Created                                                                            0.0s
 ⠿ Volume "zabbix_grafana-conf"      Created                                                                            0.0s
 ⠿ Container zabbix-grafana          Started                                                                            0.8s
 ⠿ Container zabbix-zabbix-agent-1   Started                                                                            0.7s
 ⠿ Container mysql-server            Started                                                                            0.7s
 ⠿ Container zabbix-java-gateway     Started                                                                            0.7s
 ⠿ Container zabbix-server-mysql     Started                                                                            1.2s
 ⠿ Container zabbix-web-nginx-mysql  Started                                                                            1.5s

6.4 检查Zabbix各容器状态

检查Zabbix各容器状态,确保zabbix的各组件容器正常启动。

[root@jeven zabbix]# docker compose ps
NAME                     COMMAND                  SERVICE                  STATUS              PORTS
mysql-server             "docker-entrypoint.s…"   mysql-server             running             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
zabbix-grafana           "/run.sh"                grafana                  running             0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
zabbix-java-gateway      "docker-entrypoint.s…"   zabbix-java-gateway      running             10052/tcp
zabbix-server-mysql      "/usr/bin/tini -- /u…"   zabbix-server-mysql      running             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
zabbix-web-nginx-mysql   "docker-entrypoint.sh"   zabbix-web-nginx-mysql   running             0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8080->8080/tcp, :::8443->8443/tcp
zabbix-zabbix-agent-1    "/usr/bin/tini -- /u…"   zabbix-agent             running             10050/tcp

七、访问Zabbix的web页面

7.1 访问Zabbix首页

访问地址:http://192.168.3.166:8080/
默认账号:Admin/zabbix

在这里插入图片描述

7.2 设置zabbix-server地址

  • 打开 Zabbix 的配置界面,在 Configuration > Hosts > Zabbix server

在这里插入图片描述

找到 Agent interfaces 编辑部分,将 IP 地址改为 172.66.10.20,点击 Update 保存修改。返回 Hosts 列表页面,过几分钟后刷新页面。
检查 Zabbix server 的 Availability 标签,如果看到 ZBX 变成绿色,说明 zabbix-server + zabbix-agent 部署成功。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

八、grafana配置

8.1 登录grafana的web界面

访问地址:http://192.168.3.166:3000/login
默认账号密码:admin/admin

在这里插入图片描述

在这里插入图片描述

8.2 设置系统中文

点击admin账号,进入账号系统配置界面,Language选择简体中文,保存即可。

在这里插入图片描述
在这里插入图片描述

8.3 安装zabbix插件

docker-compose文件中已在grafana中部署好zabbix插件,如未安装,可以进入插件管理页面。

在这里插入图片描述

在插件管理页面,搜索框内输入zabbix,可以看到zabbix插件。

在这里插入图片描述

点击zabbix插件,选择“enable”选项启动。

在这里插入图片描述

8.4 创建数据源

进入数据源创建界面,添加数据源,进行zabbix数据源配置:
name:zabbix
URL :http://192.168.3.166:8080/api_jsonrpc.php
账号密码:zabbix的账号密码填写即可。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8.5 查找grafana官方模板

访问地址:https://grafana.com/grafana/dashboards/,查找自己需要的zabbix模板。

在这里插入图片描述

在这里插入图片描述

8.6 配置监控模板

仪表盘配置中,导入grafana官方模板编号,这里选择7877和8677等模板,进行测试。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

九、查看grafana仪表盘效果

查看Zabbix的grafana仪表盘效果,这里使用是7877模板。

在这里插入图片描述

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值