jmeter+grafana+influxdb 搭建压测监控平台

背景

日常的版本迭代开发中,每当封版上线之前,项目组都会对当前开发后的整体系统进行稳定性、压力、回归等各种性能测试,他们的测试时间一般都会持续2-3天,在用jmeter进行测试后,由于生成的日志等请求信息会非常大,导致最后生成聚合报告失败,难以观察到 测试期间的系统各种表现,为了解决这个问题,通过今天这篇文章,我们通过搭建jmeter+grafana+influxdb 的监控平台,将jmeter实时产生的测试数据异步打入influxdb,数据库,最后我们可以通过grafana来聚合展示整个测试过程中我们想看到的聚合结果,进而避免最后jmeter生成报告失败

搭建

jmeter

jmeter是部署在专门的压力测试服务器上的,只要从官网下载进行配置即可

k8s

由于后续grafana、influxdb都是被容器化部署在k8s当中的,所以需要先部署一套k8s 集群,如果没有可以参考ubuntu 18.04 基于kubeadm 搭建kubernetes 1.15.0来搭建自己的k8s集群

grafana

对于k8s集群的监控 一般prometheus + grafana都是标配,如果没有参考kube-prometheus来搭建属于自己的监控服务,我们这篇文章只用到了里面的grafana

influxdb

  • influxdb也是部署在k8s中的,以下是他的部署文件,由于海外镜像拉取都存在缓慢或者被墙的问题,我已经通过阿里云的海外机房构建了国内的镜像,直接只用我的配置文件里的镜像即可
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: influxdb
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: influxdb
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: influxdb
    spec:
      containers:
      - name: influxdb-containers
        image: registry.cn-beijing.aliyuncs.com/mirror-suke/influxdb:1.7-alpine
        volumeMounts:
        - name: influxdb-storage
          mountPath: /data/influxdb
        ports:
        - containerPort: 8086
      volumes:
      - name: influxdb-storage
        hostPath:
          path: /root/influxdb
---
apiVersion: v1
kind: Service
metadata:
  name: influxdb
  namespace: monitoring
spec:
  type: NodePort
  ports:
    - nodePort: 31436
      port: 8086
      targetPort: 8086
  selector:
    k8s-app: influxdb
  • 注意influxdb 和grafana都部署在了相同的namespace
  • 这里通过nodeport对外暴露了influxdb的端口将集群的31436 映射到了influxdb默认端口8086,所以如果是集群内部访问,直接使用serviceName:port 的方式即可,也就是influxdb:8086,如果是从外部访问就需要 集群ip:31436的方式去访问了

配置

所有的基础服务部署完成之后,接下里就需要组合起来z这些服务来完成我们的测试功能了

influxdb

你可以进入容器内或者远程连接influx,创建后面我们写入测试数据的时许数据库和连接需要的用户,这里选择直接进入容器的方式

kubectl get po -n monitoring | grep influx
influxdb-74c54878c8-6t555             1/1     Running   0          158m

//进入容器
kubectl exec -it influxdb-74c54878c8-6t555 /bin/sh -n monitoring


//创建用户
create user "root" with password 'newpwd' with all privileges

//创建jmeter库
create database jmeter

grafana 数据源

前面部署好的grafana,我这里通过nodeport来暴露对外访问的url,这样就可以打开grafana 的ui页面了
具体grafana service的配置方式如下

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  ports:
  - name: http
    nodePort: 31435
    port: 3000
    protocol: TCP
    targetPort: 3000
  selector:
    app: grafana
  type: NodePort

打开ui页面选择配置数据源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置之前部署的influxdb的链接地址,influxdb:8086,以及创建好的的用户 、密码和库名称
在这里插入图片描述

jmeter

最后需要配置jmeter的Backend Listener,它帮我们实时发送数据到 InfluxDB,有这个 JMeter 发送给 InfluxDB, 有了这个数据之后,我们不需要看上面的那些 HTML 数据,也可以直观地看到系统性能的性能趋势。并且这样保存下来的数据,在测试结束后想再次查看也比较方便比对。
JMeter+InfluxDB+Grafana 的结构如下:
在这里插入图片描述

在这个结构中,JMeter 发送压力到服务器的同时,统计下 TPS、响应时间、线程数、错误率等信息。默认每 30 秒在控制台输出一次结果(在 jmeter.properties 中有一个参数 #summariser.interval=30 可以控制)。配置了 Backend Listener 之后,将统计出的结果异步发送到 InfluxDB 中。最后在 Grafana 中配置 InfluxDB 数据源和 JMeter 显示模板。然后就可以实时查看 JMeter 的测试结果了,这里看到的数据和控制台的数据是一样。

JMeter 中 Backend Listener 的配置
  • 首先在jmeter中添加Backend Listener
    在这里插入图片描述

  • 配置数据将要发送到的influxdb的连接地址,以及相关的应用和库信息和jmeter的listenser实现类,选jmeter相关的那个
    在这里插入图片描述

导入grafana jmeter展示模版

  • 添加一个 JMeter dashboard
    在这里插入图片描述

  • 我们常用的 dashboard 是 Grafana 官方 ID 为 5496 的模板
    在这里插入图片描述

  • 导入进来后,选择好对应的数据源。
    在这里插入图片描述

  • 最后就可以看到展示的面板了
    在这里插入图片描述

当通过jmeter 进行测试产生测试数据。这里就可以看到数据展示了

### IntelliJ IDEA 中通义 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义 AI 相关的功能。这些功能可以帮助开发者更高效地编写代并提高生产力。 #### 安装通义插件 为了使用通义的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义服务 成功安装插件之后,还需要配置通义的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义辅助编程 一旦完成上述准备工作,就可以利用通义来进行智能编支持了。具体操作如下所示: ##### 自动补全代片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义解析这段代的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值