grafana之JMeter+InfluxDB压测可视化实时监控


一、概述

本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控。

二、 介绍

JMeter引入Backend Listener,用于在压测过程中实时发送统计指标数据给时序数据库Influxdb,通过配置Grafana(开源的WEB可视化看板)数据源连接到Influxdb,我们就可以创建炫酷的可视化看板,并可以实时获取到测试指标数据。

时序数据库:处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。想象它就像一个sql表,其中时间是它的主键
InfluxDB:是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。

官网地址:https://www.influxdata.com/
数据DEMO

> select* from weather
name: weather
-------------
time                    altitude        area    humidity        temperature
1456386985094000000     1000            北      18              17
1456386985094000000     5000            上      20              47
1456386985094000000     5000            北      26              68
1456386985094000000     1000            广      17              83
1456387267668000000     1000            上      12              77
1456387267668000000     1000            北      16              20
1456387267668000000     5000            广      -3              66
1456387267668000000     5000            上      19              60

与传统数据库中的名词做比较

influxDB中的名词传统数据库中的概念
database 数据库
measurement 数据库中的表
points 表里面的一行数据

InfluxDB中独有的一些概念
Point由时间戳(time)、数据(field)、标签(tags)组成。

 
Point属性传统数据库中的概念
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags

各种有索引的属性:地区,海拔

三、安装

influxdb

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.4.x86_64.rpm
sudo yum localinstall influxdb-1.6.4.x86_64.rpm

配置文件 /etc/influxdb/influxdb.conf

vim /etc/influxdb/influxdb.conf

搜索graphite 去掉对应的#号

[[graphite]]
  # Determines whether the graphite endpoint is enabled.
   enabled = true
   database = "jmeter"
  # retention-policy = ""
   bind-address = ":2003"
   protocol = "tcp"
   consistency-level = "one"
 

注意:
默认占用8086/8088两个端口号,可以根据自己的实际场景进行替换,进入
查询 bind-address,其中端口号对应的用处说明如下

# Bind address to use for the RPC service for backup and restore.
bind-address = "127.0.0.1:8088"

...

[http]
  # Determines whether HTTP endpoint is enabled.
  # enabled = true

  # The bind address used by the HTTP service.
  bind-address = ":8086"


启动

influxd

创建database

influx
# 如果修改了端口号,则需要显示指定
influx -port xxxx

[root@ywj ~]# influx -port 8083
Connected to http://localhost:8083 version 1.6.4
InfluxDB shell version: 1.6.4
>

# 创建数据库  >后面输入命令 create database xxx
> create database jmeter
# 查看数据库
> show databases
name: databases
name
----
_internal
jmeter
mytest

jmeter添加监听器Backend Listener 验证数据是否能写入到influxdb

influxdbUrl :http://host_to_change:8086/write?db=jmeter
#host_to_change写安装influxdb服务的ip 端口如修改填写修改后的端口 db前面创建的数据库:jmeter
application :随便写后面grafana会用到

  

添加请求运行
回到influx终端:选择数据库

use jmeter

执行sql语句查看刚刚的请求数据是否有插入,如有说明配置成功

select * from jmeter

grafana

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.4-1.x86_64.rpm
yum localinstall grafana-5.1.4-1.x86_64.rpm

#### 启动grafana服务
service grafana-server start

 grafana的端口号是3000,打开web界面:http://127.0.0.1:3000 ,默认账户,密码为admin/admin。 

登录后添加 data source 链接 influxdb:

   

添加dashboard

 

这里可以添加现成的模板:选择Import dashboard

 

官网模板库地址:https://grafana.com/dashboards?dataSource=influxdb 如jmeter官方模板:copy id

 

在Import 添加搜到的模板id(还有一个和官网模板差不多的 模板ID是:4026 可参考下)

 

选择建好的data source

 

添加完成后就会出现了以下界面了