背景简述
问题:
- 做接口性能测试,需出相关图表,如服务器CPU、内存、磁盘、IO,及接口响应时间、吞吐量等;
- 有2个微服务,分别部署在2个Linux服务器上,压测机是Windows操作系统,压测工具为Jmeter;
- 希望相关数据展示比较丰富、直观、好看。
解决方案:
- 服务器监控:Prometheus + Grafana
- Jmeter压测结果:InfluxDB+Grafana
准备工作
安装包下载
- Prometheus 下载地址:Download | Prometheus
- Linux_exporter下载地址:Download | node_exporter
- Grafana 下载地址(使用9.1.6版本): Download | Grafana
- InfluxDB下载地址(使用2.0以上版本):Download | InfluxDB
- Jmeter相关jar下载地址(使用5.5.1):Download | jmeter-influxdb2-listener-plugin
下载的安装包截图
说明
Exporter是Prometheus的指标数据收集组件,它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。node-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。win服务器下载安装windows_exporter。
目前大部分资料都是介绍jmeter 与influxdb1.x版本的集成,但是在 2021 年,influxdb 升级到 2.x 版本,这个版本与 1.x 版本有结构性的调整,完全不兼容。同时Grafana很多模板和版本也有关系,因此建议使用指定的版本进行部署。
目前Jmeter提供了2个写入influxdb的监听器实现,可以成功写入influxdb,但是在grafana中使用模板,无法成功展示数据,使用提供的jar文件可以成功展示数据。
部署过程-服务器监控
Node_exporter + Prometheus + Grafana
Exporter和传统的指标数据收集组件不同
他只负责收集服务器数据,并不向Server端发送信息,而是等待Prometheus Server 主动抓取。
node-exporter 默认的抓取url地址:<http://ip:9100/metrics>,也可以自定义抓取地址。
部署和配置 node_exporter
- 将node_exporter-1.4.0.linux-amd64.tar.gz 上传到需要监控的linux上
- 解压和启动
tar -xvzf node_exporter-1.4.0.linux-amd64.tar.gz
cd ./node_exporter-1.4.0.linux-amd64
nohup ./node_exporter --web.listen-address 11.168.190.180:9527&
- 浏览器访问 http://11.168.190.180:9527/
- 点击【Metrics】
- 看到如下界面则部署成功
部署和配置 Prometheus
- 解压prometheus-2.40.2.windows-amd64.zip
- 在 prometheus.yml 中加入如下配置(job_name可自定义,targets配置上一步中部署的node_exporter地址,可以在一起监控,也可以分开监控*)
- 启动 prometheus.exe
- 访问:http://127.0.0.1:9090/
- 选择【Status】-【Targets】,可以看到刚才配置需监控的服务器
- 可以看到刚才配置需监控的服务器
部署和配置 Grafana
- 解压grafana-enterprise-9.1.6.windows-amd64.zip
- 在bin目录下启动grafana-server.exe
- 访问http://127.0.0.1:3000/,初始的登陆账户和密码是:admin/admin
- 选择【datasource】 - 【add data source】 - 【Prometheus】
- 数据源配置,填写Prometheus地址后,点击【 save & test】,提示“Data source is working”就成功了
- 面板配置:选择【Import】- 填写模板编号8919,点击【load】- 选择上一步配置的数据源prometheus,点击【Import】即可
Grafana模板说明
windows系统导入的是10467模板,Linux8919模板
可以直接导入json文件
Grafana有很多第三方分享的模板可以选择,本质是json文件,可以自定义和开发面板,并进行分享。详见:Dashboards | Grafana Labs
部署过程-压测结果展示
Jmeter + InfluxDB + Grafana
部署和配置 InfluxDB
- 解压influxdb2-2.5.1-windows-amd64.zip。2.5.1默认的配置文件config.yaml,可以手动创建,也可以不创建,手动创建后可以自定义配置,如端口号。不创建配置文件,默认的端口号是8086。
# 路径改为自己的部署路径
engine-path: D:\influxdb2_windows_amd64\engine
http-bind-address: :8087
storage-cache-max-memory-size: 268435456
bolt-path: D:\influxdb2_windows_amd64\influxd.bolt
-
在cmd中启动 influxd.exe(直接启动会提示通过cmd启动)
-
访问http://127.0.0.1:8086/ ,然后点击【get start】,填写用户名和密码,配置组织信息(自定义一个有意义的名称)和bucket(类似MySQL中的数据实例名称),组织和bucket名称后续后面在Jmeter和Grafana中都要配置使用。
-
获取访问的TOKEN,并复制Token,保存,后面在Jmeter和Grafana中都要配置Token信息
配置 Jmeter
- 将jmeter-plugins-influxdb2-listener-2.6.jar放到Jmeter的lib\ext目录下,然后启动或重启Jmeter
- 添加【监控器】-【Backend Listener】-Backend Listener implementation选择 含有influxdb2.0的(即刚添加的jar包提供的),填写相关信息,如下:
配置 Grafana
-
选择【datasource】 - 【add data source】 - 【InfluxDB】,配置数据源具体信息。
-
填写相关配置信息,Organization为InfluxDB创建时填写的组织信息,Token为前面保存的API TOKEN,Default Bucket为InfluxDB创建的数据存储桶名称
-
面板配置:选择【Import】- 填写模板编号13644,点击【load】- 选择上一步配置的数据源,点击【Import】即可。执行Jmeter压测脚本后的情况如下: