首页 > 系统相关 >搭建基于Grafana+JMeter+InfluxDB的性能监控与分析平台(Linux版)

搭建基于Grafana+JMeter+InfluxDB的性能监控与分析平台(Linux版)

时间:2024-08-13 16:27:48浏览次数:17  
标签:Grafana 性能 InfluxDB grafana 点击 Linux JMeter

搭建基于Grafana+JMeter+InfluxDB的性能监控与分析平台(Linux版)

在软件开发和运维领域,性能监控与分析是确保应用稳定性和用户体验的关键环节。随着应用规模的不断扩大和复杂度的增加,传统的性能测试工具和方法已难以满足需求。本文将详细介绍如何搭建一个基于Grafana、JMeter和InfluxDB的性能监控与分析平台,帮助团队更好地监控和分析应用的性能指标。

一、平台组件概述

1. JMeter

Apache JMeter是一款开源的负载测试工具,它可以模拟大量用户对网站或应用进行并发访问,从而评估其性能表现。JMeter支持多种协议和脚本语言,能够灵活配置测试场景,并生成详细的测试报告。

2. InfluxDB

InfluxDB是一个开源的时间序列数据库,专为处理高写入和查询负载而设计。它支持存储大量时间序列数据,并提供强大的查询和分析能力,非常适合用于存储和分析性能测试数据。

3. Grafana

Grafana是一个开源的监控和数据分析平台,支持多种数据源,并提供了丰富的图表和可视化选项。通过Grafana,我们可以轻松地将InfluxDB中的性能测试数据以图表形式展示出来,实现实时监控和数据分析。

二、平台搭建步骤

1. 安装并配置InfluxDB

InfluxDB 官网下载地址:https://www.influxdata.com/downloads/
Platform选择Linux,并根据官网的提示,进行下载安装InfluxDB,若在无网络的情况下可使用有网环境浏览器下载。

image

# 创建文件夹
mkdir /opt/performance

# 进入创建的文件夹
cd /opt/performance

# 下载 influxdb
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.9_linux_amd64.tar.gz

# 解压
tar xvfz influxdb2-2.7.9_linux_amd64.tar.gz

# 进入到启动脚本位置
cd influxdb2-2.7.9/usr/bin/

# 启动服务并自定义配置8999端口(注意等于号后面的冒号)
./influxd --http-bind-address=:8999 &

访问页面,成功显示

image

登录后,创建数据库(Bucket),并记录关键数据。

字段 说明
User 用户名(登录时的用户名)
Password 密码(登录时的密码,或初次登录时设置的密码)
Organization 组织(点击菜单栏的头像,再点击About查看)
Token 具有操作数据库权限的Token(现在Token我也不知道存哪里了,我是又重新创建了一个满权限的)
Default Bucket 数据库名称(jmeter运行结果存储的地方)
  • 查看组织
    image

  • 创建Token
    image

  • 查看数据库
    image

2. 安装和配置Grafana

Grafana 官网下载地址:https://grafana.com/grafana/download

image

# 进入创建的文件夹
cd /opt/performance

# 下载 grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.1.3.linux-amd64.tar.gz

# 解压
tar -zxvf grafana-enterprise-11.1.3.linux-amd64.tar.gz

# 进入文件夹
cd grafana-v11.1.3

# 修改配置文件,如下图修改启用端口为8990
vim conf/defaults.ini

image

# 启动服务
./bin/grafana-server &

访问页面,成功显示。用户名 & 密码 均为 admin
image

3. 创建仪表板和分析视图

I. 添加数据源
点击 Configuration -> Data sources 进入数据源界面,再点击 Add data source 进入新增数据源界面。

image

点击 InfluxDB,创建InfluxDB数据源。

image

根据下面的步骤,填写表单:

  • Name

    • 名称自定义填写
    • image
  • Query Language

    • 查询语言选择 【Flux】
    • image
  • HTTP: URL

    • influxDB 地址根据自己的服务器填写
    • image
  • InfluxDB 信息

    • 填写步骤1记录的关键数据(User、Password、Organization、Token、Default Bucket)
    • image

点击 Save & Test,返回 ,说明配置成功

image

II. 创建仪表盘
点击 Dashboards -> Browse 进入仪表盘界面,再点击 New - > import 进入导入仪表盘界面。

image

仪表盘模板大全:https://grafana.com/grafana/dashboards/
可根据关键字查询想要的一些模板

image

点击详情可获取id或获取json文件,若配置环境无网络情况下选择json文件。

image

我这里输入仪表盘ID:13644(influxdb2查询语句),点击导入仪表盘。

image

选择刚刚配置好的数据源,点击 Import 导入仪表盘。

image

4. 配置JMeter以写入InfluxDB

Jmeter官方自带的 Backend Listener(后端监听器) 里面 influxdb 客户端没有适配新版的 grafana 的数据看板,所以我们这里自己去 github 上找个适配 influxdb2.0 的客户端jar包。

传送门:https://github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin/

image

我们把下载的jar包放到jmeter的扩展/lib/ext文件夹下。

image

启动Jmeter,添加线程组,添加http请求,添加后端监听器,选择github下载的插件。

image

插件字段配置信息:

  • testName:测试名称
  • nodeName:服务器的名称
  • runId:标识号
  • influxDBHttpScheme:InfluxDB的协议
  • influxDBHost:InfluxDB服务器的主机名或 ip
  • influxDBPort:InfluxDB服务器的端口
  • influxDBToken:InfluxDB的Token
  • influxDBOrganization‍:InfluxDB的组织名称
  • influxDBBucket‍:InfluxDB的数据库名
  • influxDBFlushInterval:向 InfluxDB 发送数据的时间间隔
  • influxDBMaxBatchSize:批次的最大大小
  • influxDBThresholdError:停止导入前的错误阈值
  • samplersList:整理JMeter采样器结果的正则表达式值
  • useRegexForSamplerList:是否允许使用正则表达式
  • recordSubSamples:是否允许保存 JMeter 子样本
  • saveResponseBodyOfFailures:是否允许保存失败的响应正文
  • responseBodyLength:响应正文不超过设置的指定长度

我们可以根据需要进行填写,只修改加粗部分即可。

执行JMeter脚本,查看仪表盘
image

三、平台应用与优势

  • 应用场景
    • 实时监控:通过Grafana的仪表板,可以实时监控应用的性能指标,及时发现潜在的性能问题。
    • 历史数据分析:利用InfluxDB存储的历史数据,可以进行更深入的性能分析,找出性能瓶颈和趋势。
    • 性能调优:基于监控和分析结果,对应用进行性能调优,提升用户体验。
  • 优势
    • 开源免费:JMeter、InfluxDB和Grafana都是开源软件,可以免费使用,降低了成本。
    • 灵活可扩展:平台支持自定义测试脚本和查询语句,可以根据实际需求进行灵活配置和扩展。
    • 可视化效果好:Grafana提供了丰富的图表和可视化选项,能够直观地展示性能测试数据。

注:安装方法不唯一,且各个教程安装版本也不相同

标签:Grafana,性能,InfluxDB,grafana,点击,Linux,JMeter
From: https://www.cnblogs.com/test-gang/p/18356739

相关文章

  • Linux高级编程(一)标准io:stdio.h
    标准io的概念1975DennisrIO库,C语言的标准,ANSIc IO即input outputI:键盘是标准输入设备====》默认输入就是指键盘 /dev/inputO:显示器是标准输出设备==》默认输出就是指显示器Linux操作系统当中IO都是对文件的操作C一部分,任何支持标准C的系统都可使用标准IO实......
  • NOI Linux VSCode使用指北
    NOILinuxVSCode使用指北安装NOILinux不是已经帮你做好这一步了吗?准备首先在这里对VSC的界面做一个介绍。1.终端VSC相对于其他的编辑器的优势是有一个非常直观的内置终端,这也让我们可以专心在这一个窗口内编辑和调试代码。召唤终端的快捷键是Ctrl+Shift+P!召唤终......
  • Linux应用程序重启:优雅实现应用程序的自动重启
    简介:在Linux服务器运行应用程序时,如果应用程序出现崩溃或异常终止,为保证服务的可靠性,自动重启是一种常见的应对措施。本文将介绍Linux下实现应用程序自动重启的方法,并提供代码实现例子,帮助读者优雅地处理应用程序的崩溃和重启。1.使用init或systemd管理器Linux系统中通常有i......
  • 教程:搭建一个我的世界模组服务器(Linux)
    需要什么?一点点Linux基础一个服务器一个公网IP(也可以去搜索内网穿透)安装Java你的电脑和服务器都需要安装java,windows直接去官网下载即可。Linux的话sudoapt-getinstalldefault-jdk(测试平台为Debian)其他linux发行版的话安装也很简单,就不说了。下载Forge百度去搜......
  • Linux网络通信基础API
    这篇文章只有Linux网络通信基础API大参数信息,和返回值,这篇文章并没有这些基础API的参数类型介绍。accept的第二个参数可以查看客户端信息。创建socket#include<sys/types.h>/*SeeNOTES*/#include<sys/socket.h>intsocket(intdomain......
  • linux kill指令
    1、语法kill[options]<PID>[options]-l:列出所有可用的信号。-:发送特定的信号给目标进程,如-9表示发送KILL信号,即强制终止进程。是要终止进程的进程ID。2、列出所有可用信号[root@localhost~]#kill-l1)SIGHUP 2)SIGINT 3)SIGQUIT 4)SIGILL 5)SIGTRAP......
  • 600条Linux 命令总结
    一、基本命令uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/sda在磁盘上执行测试性读取操作系统信息arch显示机器的处理器架构uname-m显示机......
  • Alpine Linux下同时绑定DHCP与静态地址
    官方教程:https://wiki.alpinelinux.org/wiki/Configure_NetworkingAlpine官方文档只介绍了如何给网卡设置动态或者静态地址,没有提及两者兼顾。使用主机进行测试,可同时实现dhcp与静态地址共存。注意:这里绑定的是唯一本地地址,可内部自由分配保证网内唯一即可。ipv6各类地址介绍......
  • 【零基础必看的Linux教程】——Linux 安装(CentOs)
    本章节我们将为大家介绍Linux的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果自己不想搭建,也可以直接买一台学习用用。本教程以centos6.4为例。给大家附上centos下载地址:centos下载地址https://www.centos.org/download/以下针对各个版本的ISO镜像文......
  • 【nohup】【Linux】多个nohup同时跑报错
    多个nohup同时跑报错在使用Linux系统进行多任务处理时,nohup命令是一个非常有用的工具,它可以让命令在后台运行,即使终端关闭也不会影响到程序的执行,当尝试同时运行多个nohup命令时,可能会遇到一些错误,以下是对可能出现的问题的分析和解决方案。 需要了解nohup的工作原理。nohu......