JMeter监听器与压测监控之 InfluxDB

1. 简介

在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监控。

2. 环境准备

确保你的 Kali Linux 系统已经更新到最新版本:

复制代码
sudo apt update && sudo apt upgrade -y

3.安装依赖包

安装 Docker 所需的依赖包:

复制代码
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

4.添加 Docker 的官方 GPG 密钥

通过以下命令添加 Docker 的官方 GPG 密钥:

复制代码
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

5.添加 Docker 仓库

Kali Linux 基于 Debian,因此需要将 Docker 的 Debian 仓库添加到源列表中:

复制代码
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

6.更新软件包索引

添加 Docker 仓库后,更新软件包索引:

复制代码
sudo apt update

7.安装 Docker 引擎

安装 Docker 引擎和相关组件:

复制代码
sudo apt install -y docker-ce docker-ce-cli containerd.io

8.启动 Docker 服务并设置开机自启

复制代码
sudo systemctl start docker

sudo systemctl enable docker

9.验证 Docker 是否安装成功

复制代码
docker --version

10. 下载influxDB镜像

接下来,我们使用 Docker 来安装 InfluxDB。运行以下命令来拉取 InfluxDB 镜像并启动容器:

复制代码
docker pull influxdb:1.7.7
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb:1.7.7

11.进入容器内部及创建数据库,用于收集jmeter发送的压测数据

复制代码
进入内部:docker exec --it jmeterdb bash
进入命令台:influx
执⾏类sql语句 创建jmeter数据库:create database jmeter;
创建完jmeter数据库之后执⾏如下命令验证数据库已经创建成功: show databases;

12. 配置 JMeter 进行监控

打开 JMeter GUI:

创建一个新的测试计划,添加一个线程组,并配置 HTTP 请求采样器来访问你的 InfluxDB 实例。例如,你可以创建一个 HTTP GET 请求来查询 InfluxDB 的状态。

为了将数据发送到 InfluxDB,你需要在 JMeter 中添加一个后端监听器(Backend Listener)。选择 org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient,并配置 InfluxDB 的连接信息。

示例配置如下:

保存并运行测试计划,JMeter 将开始向 InfluxDB 发送监控数据。

13. 总结

通过本文,我们学习了如何在 Kali Linux 上使用 Docker 安装 InfluxDB,并使用 JMeter 进行性能监控。InfluxDB 提供了一个强大的时序数据库解决方案,而 JMeter 则是一个灵活且强大的性能测试工具。结合这两者,我们可以有效地监控和分析系统性能。希望本文对你有所帮助!

附录

Backend Listener

JMeter 中的 Backend Listener 有三种主要类型,分别是 InfluxDBBackendListener、GraphiteBackendListener 和 ElasticSearchBackendListener。它们各自有不同的特点和配置方式:

  1. InfluxDBBackendListener

    • 特点:将测试结果数据发送到 InfluxDB 数据库进行存储。InfluxDB 是一个时间序列数据库,非常适合存储和查询时间序列数据,如性能测试结果。
    • 配置项
      • influxdbUrl :安装 InfluxDB 的路径;主要格式为 http://主机地址:8086/write?db=数据库名
      • application:应用名称,在 events 表中对应的字段是 application。
      • measurement:表名,数据存储到哪个表,默认是 jmeter。
      • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填 false,因为 true 只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
      • samplersRegex:取样器列表,想收集哪些请求就填哪些,最好用正则去匹配。
      • percentiles:百分比,即类似聚合报告里 90% Line,95% Line,99% Line 的数据;倘若想要 99.9 时,需要写成【99_9】,用下划线代替点。
      • testTitle:测试名称,在 events 表中对应的字段是 text,JMeter 在测试的开始和结束时自动生成注释,该注释的值以 started 和 ended 结尾。
      • eventTags:Grafana 允许为每个注释显示标签,在 events 表中对应的字段是 tags。
  2. GraphiteBackendListener

    • 特点:将测试结果数据发送到 Graphite 监控系统。Graphite 提供了强大的数据聚合和可视化功能,使得测试人员能够直观地了解测试结果。
    • 配置项
      • graphiteHost:Graphite 服务器的 IP 地址。
      • port:端口号,默认是 2003。
      • rootMetricsPrefix:指标的根前缀,将测试结果存入数据库时,不同指标会生成不同表,但这些表都最好要有一个共同的前缀,例如 jmeter。
      • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填 false,因为 true 只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
      • samplersList:取样器列表,想收集哪些请求就填哪些,最好用正则去匹配。
      • useRegexpForSamplersList:是否使用正则表达式匹配取样器列表,如果 true 则使用。
      • percentiles:百分比,即类似聚合报告里 90% Line,95% Line,99% Line 的数据;倘若想要 99.9 时,需要写成【99_9】,用下划线代替点。
  3. ElasticSearchBackendListener

    • 特点:将测试结果数据发送到 Elasticsearch 集群。Elasticsearch 是一个分布式搜索和分析引擎,适用于处理大量数据并提供实时搜索和分析功能。
    • 配置项
      • elasticsearchUrl:Elasticsearch 集群的 URL。
      • indexName:索引名称,用于存储测试结果数据。
      • documentType:文档类型,默认是 jmeter。
      • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填 false,因为 true 只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
      • samplersRegex:取样器列表,想收集哪些请求就填哪些,最好用正则去匹配。
      • percentiles:百分比,即类似聚合报告里 90% Line,95% Line,99% Line 的数据;倘若想要 99.9 时,需要写成【99_9】,用下划线代替点。
      • testTitle:测试名称,在 events 表中对应的字段是 text,JMeter 在测试的开始和结束时自动生成注释,该注释的值以 started 和 ended 结尾。
      • eventTags:允许为每个注释显示标签,在 events 表中对应的字段是 tags。
相关推荐
蒋星熠34 分钟前
全栈开发:从LAMP到云原生的技术革命
微服务·云原生·职场和发展·架构·系统架构·web·devops
测试老哥3 小时前
Jmeter自动化性能测试常见问题汇总
自动化测试·软件测试·测试工具·jmeter·接口测试·压力测试·性能测试
plusplus1683 小时前
Kubernetes“城市规划”指南:告别资源拥堵与预算超支,打造高效云原生都市
云原生·容器·kubernetes
m0_515790415 小时前
【深度学习实战(55)】记录一次在新服务器上使用docker的流程
docker
Nazi65 小时前
kubeadm部署k8s集群环境搭建
云原生·容器·kubernetes
bing.shao5 小时前
gRPC 选型 etcd 的核心优势分析
数据库·微服务·云原生·golang·etcd
草明5 小时前
docker stats 增加一列容器名称的显示
java·开发语言·docker
焯集新人7 小时前
K8S高可用集群
云原生·容器·kubernetes
楚禾Noah7 小时前
【通用常识】YAML 中的高阶语法
运维·docker·容器
小白不想白a8 小时前
【Ansible】变量、机密、事实
运维·云原生·ansible