一、搭建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 【再同步时间】

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐