性能测试——搭建Prometheus+Grafana平台(超详细版)

一、搭建influxdb + prometheus + grafana +Jmeter监控平台

1、目的:对性能测试的结果进行持久化存储。

2、每个组件介绍

  1. Jmeter:性能测试工具,可以收集到服务器的性能测试指标:统计TPS、响应时间、线程数、错误率等信息。
  2. influxdb: 一种时序数据库, 可以永久性保存数据【除非手动清除和数 据库坏了】
    1. 时序数据库:是一种时间相关的非关系型数据库,按照时间序列记 录数据,每一条数据都有一个时间,很方便用线性图展示数据。
    2. Jmeter通过一个【后端监听器】可以将统计出的结果实时异步发送 到 InfluxDB 中进行持久化存储
  3. Grafana:监控大屏, 一个web端的展示平台, 通过更换模板展示不同的 效果,可以直接拉取influxdb数据显示出来在页面图标里,直观并美观

图解释:Jmeter通过对服务器进行压测,得到性能的业务指标,再通过后端监听器把数据传输给influxdb存储,grafana从influxdb里读取数据展示。 

3、安装和部署监控平台

  • Grafana

  1. 介绍:grafana是一款用go编写的开源应用,用于大规模指标数据的可视化 展示,是网络架构和应用分析中最流行的时序数据展示工具;【监控大屏】
    1. 支持的数据库:influxdb、prometheus、graphite等 【都是时序数据库】
    2. 官方网站:grafana.com网站
  2. 安装:安装建议使用独立机器,不要在被测项目服务器上,会占用系统资源影响性能 测试结果数据。【可以放在之前的助攻机上或者新建一个空的机器上】步骤如下:
    1. 将安装包放在服务器上grafana-9.5.21-1.x86_64.rpm
    2. 在线安装 yum install -y grafana-9.5.21-1.x86_64.rpm【或者rpm -ivh grafana-9.5.21-1.x86_64.rpm】
    3. 启动服务:systemctl start grafana-server | systemctl restart grafana-server 【启动 | 重启】
    4.  查看一下grafana的服务: systemctl status grafana-server ,状态为active(running)
    5.  web页面访问grafana服务:端口默认3000,账号和密码默认是 admin / admin
      1. 访问http://机器ip:3000,可以看到登录页面,输入账号和密码即可登录

此时,完成Grafana的安装

  • Influxdb

  1. 介绍:influxDB是一个时序数据库,使用Go语言编写,适合构建大部分分
    布式监控系统。JMeter的业务指标支持的influxdb数据库,不支持prometheus数据库。
  2. 安装:使用独立机器安装,建议grafana和influxdb放在同一机器,安装步骤如下:
    1. 导入rpm包到服务器 influxdb-1.7.0.x86_64.rpm
    2. 在服务器上在线安装:yum install -y influxdb-1.7.0.x86_64.rpm
    3. 启动数据库:influx & 或者 service influxdb start,端口为8086(&是后台运行的意思)
    4. 查看服务启动情况:ps -ef | grep influxd,如下图:
  • Jmeter 

  1. 在Jmeter与influxdb集成:添加后端监听器,选择influxdb,以及做好数据库
    的信息配置:

 备注:

        1、application对应的值是事物名,可以不改

        2、summyOnly对应的值是true,代表合并所有事物,就没有其他事物 None

Influxdb + Grafana结合使用:添加数据源【influxdb数据库】+ 添加面板【grafana的模板】

1、具体步骤

  1. 访问grafana,http://ip地址:3000,使用账号密码admin/admin 登录进去
  2. 默认没有数据源,添加数据源:Administrator-->data
    Sources-->Add data source--->搜索influxdb,并选择influxdb:
  3.  配置influxdbip和端口,并选择jmeter数据库:

4. Dashboard【New > import--> 输入5496 load >选择db名字为刚刚添加的数据源【influxDB--> import 即可:

 5. 运行脚本后,就可以看到数据了!

  • 注意事项(遇到的问题): 

1、jmeter写数据到 influxdb数据库中, Jmeter到influxdb 8086端口要通 【Jmeter通过后端监听器写入数据到influxdb数据库】 ,虚拟机防火墙关闭的,所有端口都是开放的;但是如果以后的公司用的云 服务器,那么这个端口安全组策略开放;

2、grafana到 influxdb的网络+ grafana到influxd 8086端口要通 【grafana 需要去influxdb的数据库里拿数据显示】 我们课程里是把grafana和influxdb配置在同一台机器里,但是在实际操作中未 必是同一个服务器,所以确保网络通道。

3、grafana的机器要能访问 grafana.com网站,需要load 模板。【通过id形式 加载模板,否则就用json文件离线形式导入】通过id形式导入面板,网络和域名解析都是正常; 否则用json离线导入。

二、性能监控平台:Prometheus+grafana+Export 

1、目的:监控系统资源指标【比如cpu 内存 等】

2、各个详细介绍:

  • Prometheus 数据库

1、介绍:Prometheus 是由 SoundCloud 开源监控告警解决方案。它用时序数据的方式存储数据,有独立的 PromQL (Prometheus Query Language) 数据 查询语言。以下是它的一些特点:​​

  1. 开源的,可以灵活定制

  2. 也是时序数据库,数据带time时间戳,但是格式跟influxdb有差异;功能比influxdb更强大,可以跟更多的插件进行集成,很多数据都可以写到 prometheus,更强大。

  3. Prometheus只存放数据,不主动收集数据,需要通过工具push数据 存储进去。【influxdb的数据是通过JMeter的后端监听器推送过来】 prometheus用的是export工具,收集被测服务器里的资源数据 的。

2、安装:不要安装在被测项目服务器,可以安装在助攻机上 【可以跟之前的grafana和influxdb在一台机器上】,详细步骤如下:

  1. 将安装包传到服务器上进行解压:tar -xzvf prometheus-2.20.1.linux-amd64.tar.gz
  2. 进入解压目录,启用prometheus服务,命令:./promethues & 【后台启动】
  3. 验证是否成功:http://192.168.61.158:9090/graph,默认端口为9090,可以访问到网页,说明prometheus的安装没问题【默认端口9090 端口 不可以复用和冲突的】
  4. 查看进程:ps -ef | grep prometheus

这个prometheus上能看一个数据 也有一些图标,但是不是很美观和直观,所以收集的数据 还是要借助grafana来看。

  • Export收集数据

1、介绍:export是一类监控工具【不是一个工具】:主要用于收集服务器资源利用率情 况,需要安装在被监听的服务器上【被测的项目服务器】。它的特点:

  • 可以监控数据,并定时的发送给prometheus存储在数据库里。
  • 每个场景有不同的export,需要监听不同的数据,就需要使用不同的export。
  • 如果你有多台被监控的服务器都需要收集数据,那么就需要多台服务器上 都上传这个exporter。

我们需要监控硬件资源,如:CPU、内存、磁盘、就需要Node Export

  •  NodeExport+Prometheus集成【注意确保两个服务器之间网络通的】

1、安装:因为监测的是北侧服务器的硬件资源使用情况,因此安装在被测服务器上,步骤如下:

        1、上传安装包到被测服务器并解压 : node_exporter-1.8.2.linux-amd64.tar.gz

        2、进入解压后的目录,启动这个服务: ./node_exporter &

        3、验证这个node服务是否启动:打开 http://ip:9100/metrics,可以看到metrics 这个路径,点击进去就是收集到的硬件监控的结果。刷新会实时更新监控到的数据。注意事项:

                ① node_exporter 启动后,默认端口是 9100 【注意端口需要开放安全组策略 ,不然访问不到,虚拟机防火墙都已经放开】

                ② 但是export收集数据不能持久化存储数据,所以我们要把node_export的数据全部要传到prometheus数据库里去存储。

      4. Prometheus和node_exporter联动配置
1、方法: prometheus需要修改配置文件,把 exporter 收集回来的数 据放到 prometheus 的数据库里。
2、步骤:
                        1、切换prometheus的机器,修改在prometheus的解压根目录下prometheus.yml 配置文件

                        2、vi prometheus.yml  编辑配置文件,添加下面标黄的部分:保存并退

备注
  • 地址是被测试下面的服务器的地址,不要写错了;如果要加多个目标机 器,逗号隔开就可以: - targets: ['192.168.61.156:9100','192.168.61.157:9100']
  • job_name :这个名字只要不重复,自己随便取,但是建议见名知意; server_data 或者node_export都可以
  •  注意格式对其和缩进,如果错了会识别错误

5、修改完完成后需要重启prometheus服务: 可以先kill掉之前的启动进程,再次启动一下 ./promethues & kill进程: kill -9 进程号】

  • 可以去prometheus页面上查看一下 监控节点是否显示:选择status- -> target:
  • http://ip地址:9090/targets :会出现刚刚配置的节点,并状态是up的。

虽然 prometheus 可以直接看到一些数据,但是监控也不够直观,需要结合Grafana进行展示。
  • Node Export+Prometheus+Grafana集成

在grafana里添加prometheus的数据源,并把收集的通过模板展示出来。

1、步骤:

① 添加数据源 prometheus,配置IP和端口地址,保存数据源。

② 按照图示的导航地址,找到这个页面,然后输入模板ID 12884 ,再填写我圈出来的部分

③ 点击import后,可以直接调整到监控面板里显示监控的数据

三、常见问题

1、如果出现红色的叹号:

  • 检查prometheus服务是否启动; 【ps -ef | grep prometheus】
  • grafana的数据源prometheus的配置:地址是否正确?地址有可能变化 的?

2、不提示红色叹号,但是数据显示null N/A:

  • 如果显示不出来被测服务器的instance,检查prometheus的配置文件;【可能没有配置 或者配置完没重启 配置格式有问题】
  • 如果出现连接不上问题,界面上所有的pannel都是 N/A None, pannel 是空的数据
    1. 要检查服务器的node export启动情况;【./node_exporter & 】: http://ip地址:9090/targets 检查prometheus上的状 态是否为up的;
    2. 首先排查数据源的配置没有问题;
    3. 右上角时间范围可以选择-选择时间范围(扩大)
    4. 时间不同步:数据库服务器、grafana机器、被监控机器,时间相差非常大,也会显示不了数据,需要去 同步一下时间:【date检查时间是否不一样 】
    5. influxdb数据库有数据,但是grafana不显示/显示部分数据,就是influxdb的时间和jmeter工具机器时间不一致,同步时间;
      ① yum -y install ntp 【使用ntp同步时间,如果没有ntp工具先安装一下】
      ② ntpdate cn.pool.ntp.org 【再同步时间】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/89042.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务--nacos+feign

微服务使用到了我们的多模块开发,父级工程可以在modules管理子模块 子模块中也会定义父模块 1. Nacos注册中心 Nacos已成为Java微服务生态的事实标准组件,在2023年中国Java开发者调研中占比达62%。其优势在于将服务发现与配置管理统一,显著降…

基于Python的二手房源信息爬取与分析的设计和实现,7000字论文编写

摘要 本文设计并实现了一个基于 Python 的二手房源信息爬取与分析系统。该系统通过网络爬虫技术自动从房地产网站获取二手房源信息,经过数据清洗、存储后进行多维度分析,并通过可视化界面展示分析结果。系统采用模块化设计,包括爬虫模块、数…

力扣HOT100之栈:739. 每日温度

这道题是单调栈的一个经典应用,这里我们使用单调递减的栈(从栈底到栈顶单调递减)来实现,首先我们创建一个与temperatures大小一致的全0数组result,然后我们通过一个for循环,通过下标访问的方式遍历所有元素…

vue3 报错Missing semicolon

快速定位问题: 一、在git中对比改动,实在不行重置。 二、找分号或逗号 三、误碰键盘,多了空格or一些字母,删除即可。如下

在pyCharm中创建新的conda环境

在conda中创建pychars环境 打开 CMD 或 PowerShell 或 Anaconda Prompt 输入以下命令: conda create -n pychars python3.10你可以把 3.10 换成你需要的 Python 版本,如 3.9、3.11 等。 创建完成后激活环境: conda activate pychars在 Py…

如何确定某个路由器的路由表?(计算机网络)

以下题为例 题目说要路由表关键是目的网络地址和下一跳地址 那么我们第一步先确定目的网络地址。 一共有四个网络,即有四个目的网络地址:15.0.0.0 20.0.0.0 30.0.0.0 40.0.0.0 下一跳地址就是去往目地网络的下一个ip地址 。 我们这里是要的…

ubuntu 系统 多条命令通过 bash 脚本执行

ubuntu 系统 多条命令通过 bash 脚本执行。 1、新建sh脚本。 vim run.sh 2、示例命令,写入run.sh文件内,具体命令如下: #!/bin/bash# 切换到指定目录 cd /work_space/build/bin# 执行程序 ./demo 3、给sh脚本权限。 chmod x run.sh 4、执行sh脚本…

《拆解问题的技术》笔记

思维导图 拆解问题的技术 拆解职场难题 拆解项目难题 拆解简报企划难题 拆解学习难题 拆解人生难题

langChain构建ChatRobot(1)—基础对话

摘要:本文介绍利用langChain核心组件Models里的Chat Models构建基本的Chatbot,能实现简单的问答。 文章目录 概述Chat Model1. message对象1.1 消息类型介绍:1.2 使用场景: 2. 利用ChatModel构建简单的 Chatbot2.1 实现基本的问答…

行为模式-迭代器模式

定义: Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(它提供一种方法访问一个容器对象中各个元素,而又不需暴露该 对象的内部细节。) 迭代器模式通…

图像处理算法的学习笔记

一、常见噪声简介 1. 高斯噪声 最普遍,最难用肉眼精确判断。图像整体看起来"颗粒感"很强,像蒙了一层半透明的"薄纱"或"雪花点"(就像老式电视的雪花屏),覆盖整个画面。噪声点是细小的、…

《Java开发工具全解析:从基础到前沿》

一、引言 在当今数字化时代,软件开发犹如一座庞大而复杂的大厦,支撑着我们生活中方方面面的应用。而 Java,作为软件开发领域中极为重要的一门编程语言,宛如大厦的基石,发挥着不可替代的关键作用。 自 1995 年正式诞生…

[11-4]SPI通信外设 江协科技学习笔记(5个知识点)

1 2 3 TDR、TXE、RDR、RXNE 这些术语通常与串行通信接口有关,特别是在使用 UART(通用异步收发传输器)或 USART(通用同步/异步收发传输器)时。下面是每个术语的含义和用途: • TDR(Transmit Data Register)&…

NB/T 32004-2018测试是什么,光伏并网逆变器NB/T 32004测试项目

NB/T 32004-2018测试是什么,光伏并网逆变器NB/T 32004测试项目 根据NB/T 32004-2018《光伏并网逆变器技术规范》,光伏并网逆变器的测试项目涵盖电气性能、安全保护、环境适应性、电磁兼容性及并网性能五大类,共42项核心测试内容。以下是关键测…

数据可视化——一图胜千言

第04篇:数据可视化——一图胜千言 写在前面:大家好,我是蓝皮怪!前面几篇我们聊了统计学的基本概念、数据类型和描述性统计,这一篇我们要聊聊数据分析中最直观、最有趣的部分——数据可视化。你有没有发现,很…

日常运维问题汇总_41

121.MIGO工单投料时,尽管MMBE显示库存地点1002/1003有库存,但系统还是提示报错:工厂2233未发现存储地点1002的命中数,消息编号MIGO010,如下图所示: 解决方法: T-CODE:OX09,增加工厂2233下的库存…

Monte Carlo衍生品定价(金融工程)

Monte Carlo衍生品定价(金融工程) 基于Monte Carlo模拟方法的衍生品定价综合MATLAB实现。本项目为金融工程应用提供完整框架,具有专业级代码、真实市场数据集成和详细文档。 📋 目录 项目概述功能特性项目结构安装说明使用方法…

Kubernetes服务部署——RabbitMQ(集群版)

1、简介 RabbitMQ 是一个广泛使用的开源消息队列系统,它实现了高级消息队列协议(AMQP),并且支持多种消息传递机制。它作为一个中间件,负责解耦不同应用程序或服务之间的通信,通过高效的消息传递和排队机制…

从离散控制到集成管理:Modbus TCP转CANopen网关重构烟丝膨胀生产线

在工业自动化和控制系统中,ModbusTCP和CANopen是两种广泛应用的通信协议。它们各自具有独特的优势,但在实际应用中往往需要将两者结合起来,以满足特定的需求。本文将探讨如何实现小疆智控ModbusTCP转CANopen网关GW-CANZ-TCPC,并阐…

使用离线依赖解决Android Studio编译报错(下载不了jar)——笔记

报错如图 What went wrong: Execution failed for task ‘:app:lintVitalAnalyzeRelease’. Could not resolve all files for configuration ‘:app:detachedConfiguration1’. Could not download groovy-3.0.22.jar (org.codehaus.groovy:groovy:3.0.22) Could not get reso…
推荐文章