天天看点

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

Jmeter是最常用的性能测试工具,influxdb2是一个时序数据库。

在国内有很多资料介绍了jmeter与influxdb1.x版本的集成,但是,在2021年,influxdb升级到2.x版本,这个版本与1.x版本有结构性的调整,完全不兼容。使用以前的资料,不能把它们两者集成起来。

这篇文章,是参考了大量的官方因为资料,整理的一份国内最全的集成解决方案,期望对大家有帮助。

安装influxdb2

rpm包安装

# 页面地址 https://github.com/influxdata/influxdb/releases
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.2.0.x86_64.rpm

yum localinstall influxdb2-2.2.0.x86_64.rpm -y

# 启动influxdb2
systemctl start influxdb
# 或者 service influxdb start
# 或者 influxdb run

# 查看状态
systemctl status influxdb
# 或者 service influxdb status

           

docker安装

mkdir /opt/influxdb-docker-data-volume && cd $_
docker run -itd --name influxdb2 -p 8086:8086 --volume $PWD:/var/lib/influxdb2 influxdb:2.2.0
           

配置influxdb2鉴权信息

浏览器访问 http://influxdb2_ip:8086

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

查看token

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

查看bucket-id

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

查看userid和orgid

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

查看influxdb2自带监控

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

用influxdb2监控

Ⅰ、只想监控被测服务器硬件资源使用率

在想要被监控的机器上安装telegraf

# centos && RHEL
cat <<EOF | sudo tee /etc/yum.repos.d/influxdata.repo
[influxdata]
name = InfluxData Repository - Stable
baseurl = https://repos.influxdata.com/stable/\$basearch/main
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install telegraf -y
           
# ubuntu && debain
wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdata.asc >/dev/null
echo "deb https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install telegraf -y
           

在influxdb2的UI平台中,进入Telegraf,点击create configuration

深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
  • 创建之后,这个界面的信息,别急着关闭
  • 把上面export信息拷贝到粘贴板,然后,在想被监控的服务器上执行一下;
  • 然后,再拷贝telegraf这一句,到想要被监控的机器上执行一下
  • 此时,已经在开始收集被监控的机器硬件资源使用情况了,在influxdb2的UI界面,点击Boards,选择system

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    这里就自动给我们显示了被监控的机器的硬件资源使用情况。

    被监控的机器,如果想多台,只需要在每台机器上都按照telegraf,执行export和telegraf 命令即可。多台机器,在这个监控界面,图表中用不同的颜色标识。

    Ⅱ、想要grafana+influxdb2集成监控平台监控被测服务器硬件资源使用率

    安装grafana

    • 执行安装
    # centos && RHEL
    wget https://dl.grafana.com/oss/release/grafana-8.5.0-1.x86_64.rpm
    sudo yum install grafana-8.5.0-1.x86_64.rpm -y
    
    ## ubuntu && debain
    sudo apt-get install -y adduser libfontconfig1
    wget https://dl.grafana.com/oss/release/grafana_8.5.0_amd64.deb
    sudo dpkg -i grafana_8.5.0_amd64.deb
               
    注意: 因为要使用influxdb2,所以,grafana版本请使用新版本,不要使用老的低版本,低版本不支持influxdb2.
    • docker安装
    docker run -itd --name grafana -p 3000:3000 grafana/grafana
               

    配置grafana

    • 浏览器访问http://grafana_ip:3000 admin/admin
    • 添加数据源

    注意,边界页面信息要准确

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    import模板14126

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    输入14126,点击 load

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    注意,选择influxdb2的数据源,import

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】
    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    这样,我们就可以在grafana平台中,查看到被监控的机器硬件资源使用情况了。

    如果,被监控的机器是多台,退出grafana重新登录后,打开这个面板,切换顶部右上角的host值,就可以切换查看不同机器的监控数据。

    Ⅲ、想要grafana+influxdb2+jmeter集成监控平台监控性能测试过程数据

    安装influx-cli并创建jmeter数据库

    mkdir ../influx-cli && cd $_
    wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.3.0-linux-amd64.tar.gz
    
    tar -xzvf influxdb2-client-2.3.0-linux-amd64.tar.gz
    cd influxdb2-client-2.3.0-linux-amd64
    
    ./influx config create --config-name influx-cli-config \
    --host-url http://127.0.0.1:8086 \
    --org lemon \
    --token Cfq2_NRU_0UZzm5uzwROaXdOevurmTg43b0kNFP6_leHIxn9ZRUzmrzKYP3NkhSMGMdrwXld6kPFyAYmLqyfGw== \
    --active
    
    
    ./influx v1 dbrp create \
      --db jmeter \
      --rp jmeter \
      --bucket-id fab7c7508bef96f3 \
      --default
               

    把jmeter性能测试数据写入influxdb2库

    • 使用jmeter5.4.1以上版本
    • 添加后端监听器 方法一:监听器实现选择:org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient influxbdUrl:http://You_Influxdb2_ip:8086/write?db=jmeter&org=You_Org&bucket=You_Bucket application: 自愿修改 添加influxdbToken: You_APIToken
  • 执行性能测试,此时,如果参数配置没有错误,数据就已经写入influxdb2数据库中,在任意可以连接到influxdb2数据库的机器终端窗口中执行 curl --get http://You_Influxdb2_ip:8086/query \ --header "Authorization: Token You_APIToken" \ --data-urlencode "q=select * from jmeter.jmeter.jmeter order by time desc limit 2;" # 这个sql意思是,查看jmeter库的jmeter表中,时间倒序的2条数据 # sql语句可以自己修改,与关系型数据库sql类似
  • 可以查看到写入数据库中的最新2条数据
  • 添加的后端监听器,也可以选择另外一个实现

    • 方法二:监听器实现选择:org.apache.jmeter.visualizers.backend.influxdb.InfluxDBRawBackendListenerClient
    • influxbdUrl:http://You_Influxdb2_ip:8086/write?db=jmeter&org=You_Org&bucket=You_Bucket
    • influxdbToken: You_APIToken
    • 添加application: influxdb2(自定义值)

    执行性能测试,照样可以把数据写入influxdb2数据库中。

    grafana与influxdb2集成显示jmeter测试数据

    • 首先,也是安装好grafana和配置influxdb2数据源
    • import模板 5496

    尴尬,很大的尴尬,什么数据都出不来

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    原因很简单,因为这个模板是基于influxdb1.x版本的,不支持influxdb2版本。需要自己修改。

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    对于不知道怎么修改的同学,也可以改用下面的方法:

    • 下载jdk11
    • 下载jmeter-plugin-influxdb2-listener-1.5.jar 包,把它放到jmeter的lib\ext文件夹中
    • 解压安装jdk11,不需要配置系统环境变量
    • 修改jmeter的bin文件夹中 jmeter启动文件,启动jmeter # windows ->jmeter.bat 在文件有效信息前面增加 set JAVA_HOME=你安装jdk11的路径 set PATH=%JAVA_HOME%\bin;%PATH% # mac && linux ->jmeter 在文件有效信息前面增加 JAVA_HOME=你解压的jdk11路径
    • 在jmeter的后端监听器中,选择 后端监听实现: org.md.jmeter.influxdb2.visualizer.InfluxDatabaseBackendListenerClient
  • 注意,红框中的信息填写正确
  • jmeter执行性能测试
  • grafana中import模板13644
  • 注意,选择好数据源,import

    深度好文【jmeter 性能测试与 influxdb2 集成显示监控结果 】

    至此,我们用jmeter集成influxdb2和grafana搭建监控平台,监控性能测试过程数据完整实现。