JMeter监听器与压测监控之 InfluxDB

ops/2024/11/23 7:36:08/

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 dockersudo 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。

http://www.ppmy.cn/ops/136012.html

相关文章

爬虫实战:从HTTP请求获取数据解析社区

在过去的实践中,我们通常通过爬取HTML网页来解析并提取所需数据,然而这只是一种方法。另一种更为直接的方式是通过发送HTTP请求来获取数据。考虑到大多数常见服务商的数据都是通过HTTP接口封装的,因此我们今天的讨论主题是如何通过调用接口来获取所需数据。 目前来看,大多…

【Linux】进程间通信相关知识详细梳理

目录 1. 进程间通信目的 2. 进程间通信的方式 2.1 管道 1. 匿名管道 2. 匿名管道原理 3. 命名管道 4. 管道读写规则 2.2 System V IPC 1.System V的背景 2. System V的特性 3. System V IPC(进程间通信) 3.1 消息队列(Message Queue) 3.2 共…

Kafka-Consumer理论知识

一、上下文 之前的博客我们分析了Kafka的设计思想、Kafka的Producer端、Kafka的Server端的分析,为了完整性,我们接下来分析下Kafka的Consumer。《Kafka-代码示例》中有对应的Consumer示例代码,我们以它为入口进行分析 二、KafkaConsumer是什…

React事件处理机制详解

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React- 前言 在前端开发中,事件处理是构建交互式用户界面的关键部分。React 作为一…

C语言基础学习:抽象数据类型(ADT)

基础概念 抽象数据类型(ADT)是一种数据类型,它定义了一组数据以及可以在这组数据上执行的操作,但隐藏了数据的具体存储方式和实现细节。在C语言中,抽象数据类型(ADT)是一种非常重要的概念&…

第六届国际科技创新学术交流大会(IAECST 2024)暨第四届物流系统与交通运输国际学术会议(LSTT 2024)

重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 大会简介 第六届国际科技创新学术交流大会暨第四届物流系统与交通运输国际学术会议(LSTT 2024)将于2024年12月6-8日在广州举办&…

大语言模型---ReLU函数的计算过程及其函数介绍

文章目录 1. 概要2. ReLU定义 1. 概要 **ReLU 作用:**主要用于为神经网络引入非线性能力,作用是将输入中的整数保留原值,负数置为 0。 从而在层与层之间引入非线性,使神经网络能够拟合复杂的非线性关系。 **ReLU使用场景&#xf…

什么是事务?事务有哪些特性?

在数据库管理中,事务是一个核心概念,它确保了数据操作的完整性和一致性。本文将探讨事务的定义及其四大特性。 一、事务的定义 事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体一起向系统提…