前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grafana + InfluxDB 实现 Jmeter 压测的图形化监控

Grafana + InfluxDB 实现 Jmeter 压测的图形化监控

原创
作者头像
鲍远林
修改2020-10-27 10:19:14
4.2K0
修改2020-10-27 10:19:14
举报
文章被收录于专栏:泛互云原生泛互云原生

本方案采用 Grafana + InfluxDB 实时展示 Jmeter 的压测数据,下面为本文实验的压测指标数据流向图。

本文研究了 Jmeter 提供的两种方式向 InfluxDB 写数据方式,具体在文中第二节重点描述其使用和配置:

  • 使用 Graphite 协议
  • 使用 HTTP 协议

Jmeter 提供的方式需要自己配置 Grafana Dashboard,不是很方便,本文第四节:JMeter-InfluxDB-Writer-plugin & Jmeter Load Test Dashboard介绍了 NovaTec-APM 提供的 JMeter 插件以及配套的 Grafana Dashboard,可以节省大量配置工作,推荐大家使用这种方式

此外,本文中使用的环境配置如下:

  • 腾讯云 CVM CentOS 7.7
  • InfluxDB 1.8
  • Jmeter 5.3
  • Grafana 7.1.3

1. InfluxDB 安装配置


1.1 安装 InfluxDB

CentOS 系统可使用以下命令下载安装 InfluxDB:

代码语言:txt
复制
wget http://dl.influxdata.com/influxdb/releases/influxdb-1.8.1.x86_64.rpm
sudo yum localinstall influxdb-1.8.1_64.rpm

1.2 Graphite 配置

编辑 influxdb 配置文件/etc/influxdb/influxdb.conf, 使用 graphite 协议上报数据到 InfluxDB,需要将 graphite 下面的注释去掉,设置enable=true启用 graphite。

1.3 HTTP 配置

检查配置文件/etc/influxdb/influxdb.confhttp 下面的配置是否打开并 enable,Grafana 通过 http 从 influxdb 拉取数据,默认是打开的。

1.4 启动 InfluxDB

保存配置后用下面的命令启动 influxdb,并查看运行状态。

代码语言:txt
复制
sudo service influxdb start
service influxdb status

也可使用下面的 curl 命令验证 InfluxDB 是否能正常访问:

代码语言:txt
复制
curl -i influxdb-ip:8086/ping

正常情况下,会得到下图输出的信息:

接着登录 influxdb 创建数据库和用户

代码语言:txt
复制
// 登录 influxdb
influx -precision rfc3339  //直接 influx 也可以

CREATE DATABASE perftest  // 创建数据库,和上面配置文件中的数据库名对应
use perftest 

// 创建用户并制定密码,这里的用户名和密码,在配置 Grafana 时会用到
create user "admin" with password '123456' with all privileges 

使用 InfluxDB 的 HTTP API 可以更简单的创建数据库,比如下面就创建了一个名为 loadtest 的库:

代码语言:txt
复制
curl -i -XPOST http://influxdb-ip:8086/query --data-urlencode "q=CREATE DATABASE loadtest"

2. 配置 Jmeter Backend Listener


Jmeter 支持 GraphiteHTTP 两种协议向 InfluxDB 上报压测指标数据。

2.1 使用 Graphite 协议上报 metric

2.1.1 添加后端监听器:Test Plan > Add > Listener > Backend Listener

2.1.2 选择 org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient

  • Backend Listener implementation - Jmeter 压测指标监听器的实现类,按使用的数据上报协议进行选择。本文使用 graphite 协议上报压测指标数据,因而选择 GraphiteBackendListenerClient
  • Async Queue size - 指标处理一般队列大小,除非遇到性能问题,否则保持默认 5000 不变。

2.1.3 配置后端监听器

  • graphiteMetricsSender - metric sender 的实现类,保持默认即可。
  • graphiteHost - InfluxDB 所在的主机 IP。
  • graphitePort - InfluxDB 配置文件的 graphite 中指定的端口号。
  • rootMetricsPrefix - 对应 InfluxDB 的 measurement 前缀。
  • summaryOnly - true 只保留汇总数据结果,不会存储详细的压测 metrics 数据。
  • samplersList - 保留 blank 或填 .* 表示上报所有 sampler 压测 metric。若按需上报,此处指定 sampler 的名称正则表达式。
  • useRegexpForSamplersList - true 表示使用 samplersList 指定的正则表达式,过滤 sampler 上报。
  • percentiles - 指定上报的 百分位 数据。

2.2 使用 HTTP 协议上报 metric

使用 HTTP 协议时,选择监听器org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient

  • influxdbMetricsSender - metric sender 的实现类,当前只有 HttpMetricsSender 一个实现类,保留默认即可。
  • influxdbUrl - InfluxDB 的 url,格式: http://[influxdb_host]:[influxdb_port]/write?db=[database_name]
  • application - 在多个应用压测数据共享一个 DB 时,可指定应用名,以便区分。
  • measurement - 存储 metric 的 measurement 名称,默认为 jmeter。
  • summaryOnly - true 只保留汇总数据结果,不会存储详细的压测 metrics 数据。
  • samplersRegexp - 保留 blank 或填 .* 表示上报所有 sampler 压测 metric。若按需上报,此处指定 sampler 的名称正则表达式。
  • percentiles - 指定上报的 百分位 数据。
  • eventTags - 可指定 tag,如制定则存储在 events measurement 中。

运行 Jmeter 后可使用 InlfuxDB 的 API 验证数据上报是否正常:

代码语言:txt
复制
curl 'http://influxdb-ip:8086/query?pretty=true' --data-urlencode "db=loadtest" --data-urlencode "q=SHOW SERIES"

出现下图的输出,表示 metric 数据收集正常:

3. Grafana 安装配置


3.1 安装 Grafana

CentOS 中可使用下面的命令下载和安装 grafana:

代码语言:txt
复制
wget https://dl.grafana.com/oss/release/grafana-7.1.3-1.x86_64.rpm
sudo yum install grafana-7.1.3-1.x86_64.rpm

也可去官网下载 Grafana 下载:https://grafana.com/grafana/download?platform=linux

安装完成后,使用以下命令启动 Grafana:

代码语言:txt
复制
systemctl start grafana-server

接着打开浏览器,使用 http://<IP 地址>:3000 即可访问 grafana。如果无法访问,请检查下安全组是否开放了3000端口。

3.2 添加 InfluxDB Data Source

Grafana初始用户名密码都是 admin, 登入之前提示先改初始密码,可按需修改。进入 Grafana 后按下图配置 influxdb Data Source。

3.3 配置监控大盘

按下图中的步骤添加 dashboard。

重复上面 panel 的创建步骤,添加自己感兴趣的监控图表。

Jmeter 官网上给出了每个指标的含义,具体见:https://jmeter.apache.org/usermanual/realtime-results.html

4. JMeter-InfluxDB-Writer-plugin & Jmeter Load Test Dashboard


直接使用 NovaTec-APM 提供了 JMeter-InfluxDB-Writer-plugin 以及配套的 Grafana Dashboard Jmeter Load Test 可省去配置 grafana dashboard 的麻烦。

4.1 配置 JMeter-InfluxDB-Writer-plugin

  • 下载 JMeter-InfluxDB-Writer-plugin
  • 将下载的 JMeter-InfluxDB-Writer-plugin-1.2.jar(这里选择了 1.2 版)放入 Jemter 的插件目录 JMETER_HOME/lib/ext
  • 重启 Jmeter
  • 按下图所示配置 Backend Listener,选择rocks.nt.apm.jmeter.JMeterInfluxDBBackendListenerClient,填上 InfluxDB 信息后运行启动压测,Jmeter 的日志窗口可以看到插件正常工作。

4.2 导入并使用 Jmeter Load Test 看板

在 Grafana 的 Dashboards Manage 页面,输入Jmeter Load Test 的 Dashboard ID 1152 后,点击 Import 按钮即可导入。

启动 Jmeter 压测后,即可在 Jmeter Load Test Dashboard 看到压测数据,如下图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. InfluxDB 安装配置
    • 1.1 安装 InfluxDB
      • 1.2 Graphite 配置
        • 1.3 HTTP 配置
          • 1.4 启动 InfluxDB
          • 2. 配置 Jmeter Backend Listener
            • 2.1 使用 Graphite 协议上报 metric
              • 2.1.1 添加后端监听器:Test Plan > Add > Listener > Backend Listener
              • 2.1.2 选择 org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
              • 2.1.3 配置后端监听器
            • 2.2 使用 HTTP 协议上报 metric
            • 3. Grafana 安装配置
              • 3.1 安装 Grafana
                • 3.2 添加 InfluxDB Data Source
                  • 3.3 配置监控大盘
                  • 4. JMeter-InfluxDB-Writer-plugin & Jmeter Load Test Dashboard
                    • 4.1 配置 JMeter-InfluxDB-Writer-plugin
                      • 4.2 导入并使用 Jmeter Load Test 看板
                      相关产品与服务
                      Grafana 服务
                      Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档