一、Grafana介绍
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
官方文档:https://grafana.com/docs/grafana/latest/
安装Grafana
wget https://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm
下载完成进行安装
yum localinstallgrafana-6.2.2-1.x86_64.rpm
启动grafana服务:service grafana-server start
停止grafana服务:service grafana-server stop
启动服务,打开浏览器,输入IP+端口,3000为Grafana的默认侦听端口。
注意一点就是先添加防火墙:
firewall-cmd --add-port=3000/tcp --permanent
firewall-cmd --add-port=3000/udp --permanent
firewall-cmd --reload
默认账号密码 admin/admin
二、InfluxDB介绍
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。
主要功能:
1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
2)可度量性:你可以实时对大量数据进行计算
3)基于事件:它支持任意的事件数据
InfluxDB主要特点:
1)无结构(无模式):可以是任意数量的列
2)可拓展的
3)支持min, max, sum, count, mean, median 等一系列函数,方便统计
4)原生的HTTP支持,内置HTTPAPI
5)强大的类SQL语法
6)自带管理界面,方便使用
InfluxDB安装
InfluxDB官方文档:
https://docs.influxdata.com/influxdb/v1.6/
下载安装包:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm
下载完之后,直接就可以安装
yum localinstallinfluxdb-1.7.0.x86_64.rpm
提示一下信息即表示安装成功了
启动influxdb数据库:service influxdb start
停止influxdb数据库:service influxdb stop
端口说明
8083:访问web页面的地址,8083为默认端口;
8086:数据写入influxdb的地址,8086为默认端口;
8088:数据备份恢复地址,8088为默认端口;
开启防火墙:
firewall-cmd --add-port=8086/tcp --permanent
firewall-cmd --add-port=8086/udp --permanent
firewall-cmd --reload
PS:如果你的服务器是阿里云的话,在阿里云控制台-安全组,开启准入访问的端口,不然访问不了。
查看InfluxDB端口号:
Netstat -nultp
提示没找到命令。
解决办法:
linux使用netstat或者ifconfig命令时,显示命令未找到。
yum install net-tools
再重新查看端口号即可
三、安装InfluxDB+Grafana集成Jmeter解决方案
安装说明:安装influxDB时需要root用户或者管理员权限
1.下载安装包
wgethttps://dl.grafana.com/oss/release/grafana-6.2.2-1.x86_64.rpm
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm
2.安装
yum localinstallgrafana-6.2.2-1.x86_64.rpm
yum localinstallinfluxdb-1.7.0.x86_64.rpm
3.启动/停止
1)启动/停止influxdb数据库
service influxdb start/stop
2)启动/停止grafana服务
servicegrafana-server start/stop
4.使用InfluxDB的HTTPAPI
1)使用命令:curl -i39.106.184.169:8086/ping
[root@llp~]#curl -i 39.106.184.169:8086/ping
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 6e9ce449-8cef-11e9-8001-00163e0e0502
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.0
X-Request-Id: 6e9ce449-8cef-11e9-8001-00163e0e0502
Date: Wed, 12 Jun 2019 08:52:39 GMT
2)使用命令:curl -i-XPOST http://39.106.184.169:8086/query --data-urlencode "q=CREATEDATABASE jmeter"
完整命令为:[root@llp~]# curl -i -XPOST http://39.106.184.169:8086/query--data-urlencode "q=CREATE DATABASE jmeter"
HTTP/1.1 200 OK
Content-Type: application/json
Request-Id: c9d3f8b5-8cef-11e9-8002-00163e0e0502
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.0
X-Request-Id: c9d3f8b5-8cef-11e9-8002-00163e0e0502
Date: Wed, 12 Jun 2019 08:55:12 GMT
Transfer-Encoding: chunked
{"results":[{"statement_id":0}]}
5.配置influxdb
配置是把默认的参数开启,配置文件中很多参数都是关闭的。
【vim /etc/influxdb/influxdb.conf
[[graphite]]
enabled =true
database= "jmeter"
retention-policy= ""
bind-address= ":2003"
protocol= "tcp"
consistency-level = "one"
batch-size =5000
batch-pending =10
batch-timeout ="1s"
udp-read-buffer= 0
separator ="."】
执行命令:
influxd -config /etc/influxdb/influxdb.conf
6.配置Jmeter后端侦听器
1)打开JMeter,建立测试计划,并且添加监听器-【后端监听器】
2)后端监听器】实现选择:org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
3)键influxdbMetricsSender值org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender(默认值,将指标发送到InfluxDB的实现类。目前只有一个可用选项,因此请将其保留为默认选项)
4)键influxdbUrl值http://39.106.184.169:8086/write?db=blazedemo_performance(此选项的值已修改,url路径地址+数据库名称)
5)键application值BlazeDemo(此选项的值已修改,我们可以在一个数据库下存储来自不同应用程这就是为什么这个参数用于从一个特定应用程序分组指标的原因)
6)键measurement值jmeter(默认值,将存储在InfluxDB中的测量名称(基于文本的行InfluxDB内部协议,用于存储指标)。对该属性使用默认的“jmeter”)
7)键summaryOnly值false(此选项的值已修改,默认是true,修改为false,如果您只想在数据库中保留摘要结果并且不希望在测试执行期间收集所有详细指标,请输入“true”)
8)键samplersRegex值*(默认值,regexp表达式,用于过滤要存储到数据库中的特定度量标准。如果要存储所有指标,请使用默认的“。*”值)
9)键percentiles值90;95;99(默认值,应发送到数据库的指标百分位数)
10)键testTitle值Test name(默认值)
11)键eventTags值(空,不填写)(默认值,将存储在InfluxDB的“事件”度量中的标记列表)
配置完成后!
7.运行性能脚本
配置完成后,让我们运行JMeter性能脚本。您可以通过JMeter UI运行它,也可以在非GUI模式下运行它(如果您想知道如何,请查看本文)。一旦我们启动性能脚本,后端监听器就会开始推送将在我们之前配置的名为“blazedemo_performance”的InfluxDB数据库中收集的指标。
在我们启动脚本之后,我们需要确认正在收集指标。为此,我们可以使用HTTP API,以这种结构化方式显示json响应的返回值:
使用命令:curl'http://39.106.184.169:8086/query?pretty=true' --data-urlencode"db=blazedemo_performance" --data-urlencode "q=SHOW SERIES"
{
"results": [
{
"statement_id": 0,
"series": [
{
"columns": [
"key"
],
"values": [
[
"events,application=BlazeDemo,title=ApacheJMeter"
],
[
"jmeter,application=BlazeDemo,statut=all,transaction=1、influxdb"
],
[
"jmeter,application=BlazeDemo,statut=all,transaction=all"
],
[
"jmeter,application=BlazeDemo,statut=ok,transaction=1、influxdb"
],
[
"jmeter,application=BlazeDemo,transaction=internal"
]
]
}
]
}
]
}
8.Influxdb数据库基本使用命令:
- 进入数据库influx
- 显示数据库showdatabases;
- 使用数据库use jmeter
- 显示表showmeasurements
- 查询数据select * fromjmeter
9.配置Grafana和创建仪表板