Linux使用docker compose 部署Telegraf + InfluxDB + Grafana监控平台

背景:
在学习性能测试时,需要基于Telegraf + InfluxDB + Grafana部署一个性能监控平台。部署方式有多种,可以直接下载资源包进行部署,也可以直接通过容器部署。我推荐直接使用容器部署。当存在多个容器时,我更推荐使用docker compose 进行部署。其中我influxdb的版本为1.8,telegraf、grafana为最新版。

配置docker compose:
Docker Compose 依赖 Docker 引擎,配置前需要先安装docker。建议升级docker版本,在 Docker 24.0.5 中,docker compose 已经作为 CLI 插件原生集成,无需额外安装;其余方式可以查看其他资料。

工具介绍:
【Telegraf 】:主要用于监控服务器资源使用情况。
【InfluxDB 】:用于存储收集的数据。
【Grafana】:可视化平台,用于展示各种数据。
【chronograf】:influx低版本的web页面(influxdb 1.3版本之后就移除了web页面(这就是低版本访问:http://indlux:8086页面404的原因),因此需要加该插件。)

平台架构:
数据采集层 存储层 可视化层
├── Telegraf(监控服务器资源) │
├── JMeter(压测接口性能) → InfluxDB → Grafana(统一仪表盘)

部署步骤:

1.步骤说明:创建目录存放配置和数据,避免容器重启后丢失数据
mkdir -p ~/monitoring/{influxdb,grafana,telegraf}
cd ~/monitoring
2.使用docker pull 拉取对应插件的镜像,版本需要与docker compose文件中的保持一致。
3.编写docker-compose.yml文件

version: '3'

services:
  # InfluxDB 1.8 (带 Web 管理界面)
  influxdb:
    image: influxdb:1.8
    container_name: influxdb
    ports:
      - "8086:8086"   # 数据读写端口
      - "8083:8083"   # Web 管理界面端口
    volumes:
      - ./influxdb/data:/var/lib/influxdb  # 数据持久化目录
    environment:
      - INFLUXDB_ADMIN_USER=admin          # 管理员账号
      - INFLUXDB_ADMIN_PASSWORD=admin123   # 管理员密码
      - INFLUXDB_HTTP_AUTH_ENABLED=true    # 启用认证
      - INFLUXDB_DB=telegraf               # 默认数据库
    networks:
      - monitoring_net

  # Chronograf 1.8 (InfluxDB 1.x 官方 Web 界面)
  chronograf:
    image: chronograf:1.8
    container_name: chronograf
    ports:
      - "8888:8888"   # Chronograf 访问端口
    environment:
      - INFLUXDB_URL=http://influxdb:8086  # 指向 InfluxDB 服务
      - INFLUXDB_USERNAME=admin
      - INFLUXDB_PASSWORD=admin123
    depends_on:
      - influxdb
    networks:
      - monitoring_net

  # Grafana 最新版 (可视化仪表盘)
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    user: "0"
    ports:
      - "3000:3000"
    volumes:
     - ./grafana/data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin123
    depends_on:
      - influxdb
    networks:
      - monitoring_net

  # Telegraf 最新版 (数据采集)
  telegraf:
    image: telegraf:latest
    container_name: telegraf
    volumes:
      - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf
      - /:/hostfs:ro                 # 宿主机资源监控
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Docker 监控
    environment:
      - HOST_ETC=/hostfs/etc
      - HOST_PROC=/hostfs/proc
      - HOST_SYS=/hostfs/sys
    depends_on:
      - influxdb
    networks:
      - monitoring_net

# 自定义网络确保容器互通
networks:
  monitoring_net:
    driver: bridge

注意!在grafana的模块,有这一配置 user: “0”,其目的是授予超管权限,去解决grafan文件写入无权限的问题,慎用。建议还是按照标准方式处理权限问题。chronograf的配置就是为了解决低版本访问http://indlux:8086页面404的问题。

4.执行命令 docker compose up -d,启动docker compose文件中的镜像;容器状态为running则表示容器已正常运行。
在这里插入图片描述

平台配置:
在物理机访问http://ip:3030,登录grafana平台,添加influxdb配置(ip为宿主机ip)
在这里插入图片描述
配置页面需要注意填写influxdb服务的地址,鉴权信息、数据库等。
在这里插入图片描述
填写完成保存成功,即表示配置完成
访问influxdb的web页面:http://ip:8888(docker compose中做了配置,不然1.8版本的无法访问web页面)
在这里插入图片描述
在这里插入图片描述

注意事项:
【容器网络不存在】
通过命令检查是否存在名为 monitoring_net 的 Docker 网络时,可以得到如下结果(docker compose中指定了容器间的通信模式),
在这里插入图片描述
但是在通过命令docker network inspect monitoringnet grep -E "grafanalinfluxdb"查看指定的容器是否处于同一网段时,提示网络不存在。

在这里插入图片描述
原因如下:Docker Compose 默认会将 项目名称 作为网络前缀,因此实际网络名称为monitoring_monitoring_net(假设你的项目目录名为 monitoring)。

在这里插入图片描述
【grafana的web页面配置提示网络被重置】
在这里插入图片描述
原因如下:配置完全正确,是因为我使用的是公司的环境,公司的防火墙把我配置的接口请求当做攻击拦截了,如果你配置遇到类型的问题,可以找一下公司的运维(这个问题困扰我很久…)

配置完成后,数据无法写入influxdb:
jmeter报错日志如下:
2025-04-18 10:30:07,500 ERROR o.a.j.v.b.i.HttpMetricsSender: Error writing metrics to influxDB Url: http://xx.xx.xx.xx:8086/write?db=jmeter , responseCode: 401, responseBody: {“error”:“unable to parse authentication credentials”}
这是由于我启用了认证,需要授权。
解决步骤:
1.在 JMeter 的 Backend Listener 中添加认证参数:http://ip:8086/write?db=jmeter&u=admin&p=admin123
2.确保用户 admin 对数据库 jmeter 有写权限:

-- 进入 InfluxDB 容器执行
docker exec -it influxdb influx -username admin -password admin123

-- 切换到 jmeter 数据库
USE jmeter

-- 授予 admin 用户所有权限
GRANT ALL PRIVILEGES TO admin

-- 验证权限
SHOW GRANTS FOR admin
-- 预期输出:
-- database privilege
-- ----------- ----------
-- jmeter      ALL PRIVILEGES
                                                                                   学海无涯
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值