从我的博客搬运:

http://keithmo.me/post/2017/12/2017-12-16-jmeter-grafana-dashboard/

【警告】这篇东西是配置笔记,你会看到满屏鸡肠,不打算自己做一个可以不看。成品我已经传到官网了,能直接导入 Grafana 里,地址如下:

https://grafana.com/dashboards/4026

接下来还会配 Gatling、服务器性能指标、数据库、MQ 的等等,都是把官网上一些比较好的拿来改造成方便自己看的样子


在服务器上跑 JMeter 做压测的话,给工具本身也配上实时监控是必须的,命令行输出能提供的信息太少。

JMeter 的 Backend Listener 支持 Graphite 和 InfluxDB,这里选择 InfluxDB 做时序数据库,支持类似 SQL 的查询语法是最大的优点。另外在 JMeter 3.2+ 里配置起来也比 Graphite 方便太多。(缺点是直到写这篇文章时官网文档都没更新,要自己查存储的字段,猜它有什么用)

Grafana 能配出非常漂亮的监控仪表板,就是配的过程非常痛苦,不做非常详细的笔记的话过几天又忘光了,于是有了这篇东西。


【前提】

【注意】

吞吐率和响应时间图表只计算成功的请求(失败的通常没意义,超时失败的能在表格里看到数量),结果可能会跟 JMeter 里看到的有出入。

【效果】

总体

错误数

单个接口

已经上传到 Grafana 官网,可以从以下地址下载 JSON 文件,或通过 ID 4026 直接导入:

https://grafana.com/dashboards/4026


JMeter Backend Listener 参考配置:

JMeter设置


Settings


Templating

$data_source

$application

$transaction

可惜 templating 里不支持 $timeFilter(由于 InfluxDB show tag values 语法的限制),时间久了之后各种接口名看着会比较乱。

$measurement_name

$send_interval


Annotations

编辑 Annotations & Alerts(Built-in)


第 1 行

第 1 排

Singlestat - Total Requests, Span 4

Singlestat - Failed Requests, Span 4

Singlestat - Error Rate %, Span 4

第 2 排

Graph - Total Throughput, Span: 4

Graph - Total Errors, Span: 4

Graph - Active Threads, Span: 4

第 3 排

Graph - Transactions Response Times (95th pct), Span: 4


第 2 行

Table - Errors per Transaction, Span: 4

Table - Error Info, Span: 8


第 3 行

复制第 1 行的图表(除了线程图),改一下 SQL 和一些细节就行。

第 1 排

Singlestat - Total Requests - $transaction, Span 4

Singlestat - Failed Requests - $transaction, Span 4

Singlestat - Error Rate % - $transaction, Span 4

第 2 排

Graph - Throughput - $transaction, Span: 4

Graph - Errors - $transaction, Span: 4

第 3 排

Graph - Response Times - $transaction, Span: 4


导出的 JSON 文件没有 data source,无法直接导入,需要手动编辑文件,在 "__inputs": [] 里加入以下:

{
  "name": "JMETER_DASHBOARD",
  "label": "DB name",
  "description": "",
  "type": "datasource",
  "pluginId": "influxdb",
  "pluginName": "InfluxDB"
},

如果想上传到官网,为了能正确分类,"__requires": [] 里还要加入以下:

{
  "type": "datasource",
  "id": "influxdb",
  "name": "InfluxDB",
  "version": "1.4.0"
},

参考:

https://grafana.com/dashboards/3351


↙↙↙阅读原文可查看相关链接,并与作者交流