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。它们各自有不同的特点和配置方式:
-
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。
- influxdbUrl:安装 InfluxDB 的路径;主要格式为
-
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】,用下划线代替点。
-
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。