APM架构
上次公司请《性能测试进阶指南——LoadRunner11实战》作者陈霁来公司讲课,介绍了APM,感觉挺好用的,于是就搭建了一个。APM主要是对性能测试全流程进行监控并反映的一个平台框架。要实现的内容如下:
- 实时监控jmeter压测过程中的请求数据/响应数据以及对应统计信息等
- 实时监控被测主机的性能数据,比如CPU/内存/IO/网络等信息
其中涉及到两个重要的时序数据库:Influxdb
和Promethues
。Influxdb用于存储Jmeter执行过程的请求和响应信息;Promethues有两个作用,一个是监控服务器信息,另一个是存储这些数据信息;整体架构如下:
服务安装
Influxdb/Promethues/Grafana的安装都挺简单的,直接网上找一些安装文档即可。不赘述。然后Promethus要监控服务器,需要分为Linux
和Windows
服务器。
Linux:直接官网下载Node_exporter并执行./node_exporter即可,端口为9100
Windows:wmi_exporter下载地址下载wmi_exporter.msi,双击运行即可,端口为9182
服务配置
Jmeter配置:添加后端监视器
要配置几个关键项:summaryOnly
:要设置为falseuseRegexpForSamplersList
:要设置为truesamplersList
:正则匹配jmeter测试线程组的名称,用于区分每个请求名称,比如一个application下有多个测试项,每个测试项的线程组以JM_xxx开头,可以写为JM.+application
:用于区分不同应用的测试内容,为了便于在grafana图标切换,可以写项目名称
另
:为了查看jmeter执行过程是否报错,可以设置显示log,看看是否有ERROR
Influxdb配置:用influx连接到influxdb后,要创建jmeter数据库,不然可能会出现jmeter写入数据库报错找不到jmeter数据库
Promethues配置:
- 在每台待监控被测服务器安装exporter并运行
- 在promethus.yml添加job_name,targets填写这些服务器的ip和端口
- 重启promethues服务
注:promethues严格要求空格,少一个空格可能执行的时候就执行失败!
Grafana模板
到grafana模板网站,找个wmi监控模板和linux监控模板,下载下来并导入。
模板部分内容是可以直接使用,但是很多时候是无法使用的。一般模板左上角都是可以选择服务器IP/应用名称等信息的,然后根据选择来切换不同服务器的监控信息。
(一) 、所有图表完全无法使用的时候
1、需要进入该模板的统一配置中心,点击Dashboard Settings
查看变量信息:windows模板
:linux模板
:
2、根据exporter类别来分别设置node和server
3、时间要看最近5分钟的,一般刚开始如果时间太长的话会因为无数据而报错。
4、查看当前模板所有图表是否全都可以正常显示。
(二)、部分图表无法显示
1、点击该图表的下拉选项-选择编辑,查看查询语句
2、查看间隔时间是否小于30s,如果是的话尽量调整到大于等于30s以上的,看看是否有数据
3、查看语句里引用的变量是否为空值,可以采用逐一去除引用变量或者将所有变量都去除的方式(也就是将花括号整个删除掉),查看是否有数据显示
4、其他错误:一般错误的话,左上角的感叹号会给出具体错误内容,此时可以查看报错语句再去具体定位
实际事例
Wmi监控:
linux监控:
来源:CSDN
作者:ttphoon
链接:https://blog.csdn.net/ttphoon/article/details/103803212