安装InfluxDB

InfluxDB的简介

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

类似的数据库有Elasticsearch、Graphite等。、

功能特点

基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
可度量性:你可以实时对大量数据进行计算
基于事件:它支持任意的事件数据基于事件:它支持任意的事件数据

InfluxDB的主要特点

无结构(无模式):可以是任意数量的列
可拓展的
支持min, max, sum, count, mean, median 等一系列函数,方便统计支持min, max, sum, count, mean, median 等一系列函数,方便统计
原生的HTTP支持,内置HTTP API原生的HTTP支持,内置HTTP API
强大的类SQL语法强大的类SQL语法
自带管理界面,方便使用自带管理界面,方便使用

注意

自带管理界面在1.2版之后,将不再提供。
集群功能在1.2版之后,也不再提供。

InfluxDB与传统数据库的比较

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

InfluxDB的独特的特性

point

Point相当于传统数据库里的一行数据,如下表所示:

oint属性 传统数据库中的概念
time(时间戳) 每个数据记录时间,是数据库中的主索引(会自动生成)
fields(字段、数据) 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags(标签) 各种有索引的属性:地区,海拔

注意

  • 在influxdb中,字段必须存在。因为字段是没有索引的。如果使用字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。类比一下,fields相当于SQL的没有索引的列。
  • tags是可选的,但是强烈建议你用上它,因为tag是有索引的,tags相当于SQL中的有索引的列。tag value只能是string类型。

series

相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

> select * from students
name: students
time score stuid value
---- ----- ----- -----
s123
s123
s123
s123
s123
s124
s125
> show series from students
key
---
students,stuid=s123
students,stuid=s124
students,stuid=s125

shardshard 和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复;
例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。
每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

组件

1.TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。
cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

2.WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

3.TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。

4.Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

主要进行两种操作

  1. 一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。
  2. 另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

安装

环境: CentOS6.8_x64
InfluxDB版本:1.7.0

InfluxDB的安装

wget  https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm
rpm -ivh influxdb-1.7..x86_64.rpm

安装后产生的InfluxDB相关文件说明:

/usr/bin下文件
  • influxd           influxdb服务器
  • influx             influxdb命令行客户端
  • influx_           inspect 查看工具
  • influx_stress   压力测试工具
  • influx_tsm      数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式)
/var/lib/influxdb下文件夹

data                    存放最终存储的数据,文件以**.tsm**结尾

meta                   存放数据库元数据

wal                     存放预写日志文件

/etc/influxdb下文件

influxdb.conf          influxdb数据库配置文件

配置文件参数详解:https://blog.csdn.net/zx711166/article/details/84325865

修改配置

修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放,   找到 [http] 、 [[graphite]]节点,enabled改为true(默认是开启的),bind-address修改绑定的IP和端口:

vim /etc/influxdb/influxdb.conf
# 找到graphite并且修改它的库与端口,修改为下面的结果:
[[graphite]]
enabled = true
database = "jmeter"
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"

# [http]

       #Determines whether HTTP endpoint is enabled.

       enabled= true      

       # The bindaddress used by the HTTP service.

       bind-address= ":8086"          此处配置的IP和端口供grafana连接使用

# 找到admin,将前面的#号去掉,开放它的UI端口,1.70版本没找到这个admin到配置的地方,我就没有修改,没有修改也是可以的
[admin]
# Determines whether the admin service is enabled.
enabled = true # The default bind address used by the admin service.
bind-address = ":8083" # Whether the admin service should use HTTPS.
# https-enabled = false # The SSL certificate used when HTTPS is enabled.
# https-certificate = "/etc/ssl/influxdb.pem

配置完了之后:

启动InfluxDB

服务式启动命令

#服务式启动命令
service influxdb start
#停止服务
service influxdb stop
#重启服务
service influxdb restart
#尝试重启服务
service influxdb try-restart
#重新加载服务
service influxdb reload
#强制重新加载服务
service influxdb force-reload
#查看服务状态
service influxdb status
#以非服务方式启动
cd /usr/bin
./influxd
服务启动查看是否正常
#通过查看服务对应进程
[root@CESHI_HT_Jmeter_1 ceshi]# ps aux | grep influx
root 0.0 0.0 pts/ S+ : : grep --color=auto influx
influxdb 0.1 0.9 ? Sl Jan13 : /usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /etc/influxdb/influxdb.conf
#通过service influxdb status命令,查看服务状态

[root@CESHI_HT_Jmeter_1 ceshi]# service influxdb status
influxdb process is running [ OK ]

服务启动后相关端口
  • 8086:HTTP API的端口
  • 8088:备份恢复时使用,默认值为8088

InfluxDB 客户端命令行方式操作

客户端命令行方式操作

[root@localhost influxdb]# influx
Connected to http://localhost:8086 version 1.7.0
InfluxDB shell version: 1.7.0
Enter an InfluxQL query
>

显示数据库

> show databases
name: databases
name
----
_internal
jmeter

新建数据库

> create database testdb
> show databases
name: databases
name
----
_internal
testdb

 删除数据库

> drop database testdb
> show databases
name: databases
name
----
_internal

使用数据库

> create database testdb
> use testdb
Using database testdb

显示所有表

show measurement

删除表

> drop measurement disk_free

安装Grafana

使用yum下载Grafana并且安装

 wget https://dl.grafana.com/oss/release/grafana-6.3.5-1.x86_64.rpm
rpm -ivh grafana-6.3.5-1.x86_64.rpm
报错:warning: grafana-6.3.5-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
error: Failed dependencies:
urw-fonts is needed by grafana-6.3.5-1.x86_64 执行 yum install -y urw-fonts
再进行第一步的运行rpm -ivh grafana-6.3.5-1.x86_64.rpm
然后启动即可/etc/init.d/grafana-server restart

打开浏览器,访问机器IP“http://127.0.0.1:3000

输入用户名,密码登录系统。用户名与密码都是"admin"

添加需要展示数据的数据库(配置InfluxDB )

添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击“add”添加之后点击“Test & Save” 提示“Success”说明成功了

【注意】URL的端口是8086,而刚才配置的8083是UI的端口。

- 8083端口是InfluxDB的UI界面展示的端口

- 8086端口是Grafana用来从数据库取数据的端口

- 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口

配置JMeter

在线程组右键——>添加——>监听器——>后端监听器

使用InfluxdbBackendListenerClient说明:

  • influxdbMetricsSender:org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
  • influxdbUrl:influx数据库的url。example : http://influxHost:8086/write?db=jmeter
  • application:被测试的应用名称。此值也作为名为“application”的标记存储在“events”中
  • measurement:使用默认的”jmeter“就行
  • summaryOnly:为true的情况下,只输出所有请求的集合数据报告,为flase的情况下,输出每条数据的详情报告、
  • samplersRegex:正则表达式将与样本名称匹配并发送到后端。默认匹配所有
  • testTitle:测试名称。默认的设置为 Test name。该值作为名为“text”的字段存储在“事件”度量中。 JMeter在测试的开始和结束时自动生成一个注释,其值以'started'和'ended'结尾
  • percentiles:要发送到后端的百分位数,多个值已;分割
  • TAG_WhatEverYouWant:自定义标签。您可以根据需要添加任意数量的自定义标签。对于它们中的每一个,只需创建一个新行并在其名称前加“TAG_”

配置Grafana

添加一个图表

点击旁边的绿点“Add Panel -> Graph”

配置图表

配置好了,就能看到图了。如果看不到图,请用Jmeter多发几次请求。下图中选择监控的选项,可以在Jmeter的官网上查看到对应的解释

Graph里面的选项有:

General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Time range(时间范围)

Genera(常规选择):添加图形标题,图形宽度高度等

Title:仪表板上的面板标题

Span:列在面板中的宽度

Height:面板内容高度(以像素为单位)

选取/详细信息链接(Drilldown / detail link)

选取部分允许添加动态面板的链接,可以链接到其他仪表板或URL。

每个链接都有一个标题,一个类型和参数。链接可以是 dashboard或 absolute链接。如果它是一个仪表板链接, dashboard值必须是一个仪表板的名字。如果这是一个 absolute链接,是URL链接的URL。

params允许添加额外的URL参数的链接。格式是 name=value与多个参数分开,当链接到另一个仪表板使用模板变量,你可以使用 var-myvar=value填充模板变量的期望值链接

Metrics(指标)

定义了来源数据的呈现,每个数据源都提供不同的选择。面板的来源数据通过group,host,application,item从zabbix中获得。

Axes(坐标轴)

用于坐标轴和网格的显示方式,包括单位,比例,标签等。

Left Y和 Right Y可以定制使用,因其中的可选参数太多,请在使用的时候参考官方文档;

Legend(图例):图例展示

图例的参数:

Total:返回所有度量查询值的总和

Current:返回度量查询的最后一个值

Min:返回最小的度量查询值

Max:返回最大的度量查询值

Avg:返回所有度量查询的平均值

Decimals:控制Legend值的多少,以小数显示悬浮工具提示(图)

Grafana 中Legend值的计算取决于你使用的度量查询方式和什么样类型的聚合或合并点来实现的,所有上述所说的值在同一时间可能都是不正确的。例如,如果你是每秒请求一次,这可能是使用平均值来作为一个整合,然而这个Legend值不会代表请求的总数。这只是Grafana收到的所有数据点的总和。

Display(显示样式)

显示样式的控件属性图如下:

图表模式(Draw Modes)

Bar:一个条形图显示值

Lines:显示线图值

Points:显示点值

选择模式(Mode Options)

Fill:系列的颜色填充,0是没有。

Line Width:线的宽度。

Staircase:楼梯状显示。

如果有多个选择项,它们可以作为一个群体显示。

叠加和空值(Stacking & Null value)

Stack:每个系列是叠在另一个之上

Null value:空值

如果你启用了堆栈可以选择应该显示鼠标悬停功能。

Time range(时间范围)

更多Grafana功能请查阅官方文档....https://grafana.com/grafana

导入grafana已经有的模版

目前界内很多大佬都有上传自己研发的一套监控体系,看以从仪表盘下载对应的需求的仪表盘进行监控,同时可以从中优化 添加时候自己工作业务需要的监控

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

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

选择建好的data source

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

就可以显示实时监控的数据信息了。

参考链接:

https://blog.csdn.net/zx711166/article/details/84325838

https://www.cnblogs.com/Lam7/p/8304076.html

influxdb+Grafana+jmeter监控搭建的更多相关文章

  1. window平台基于influxdb + grafana + jmeter 搭建性能测试实时监控平台

    一.influxdb 安装与配置 1.1 influxdb下载并安装 官网无需翻墙,但是下载跳出的界面需要翻墙,我这里提供下载链接:https://dl.influxdata.com/influxdb ...

  2. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)

    在做性能测试的时候,重点关注点是各项性能指标,用Jmeter工具,查看指标数据,就是借助于聚合报告,但查看时也并不方便.那如何能更直观的查看各项数据呢?可以通过InfluxDB+Grafana+Jme ...

  3. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(三)

    在之前系列博文中,已经介绍完了数据采集和数据存储,那数据如何展示呢?所以今天就专门来讲下数据如何展示的问题. 以前博文参考: Docker系列--InfluxDB+Grafana+Jmeter性能监控 ...

  4. jmeter+influxdb+grafana性能测试监控

    背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...

  5. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  6. 【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor

    前言 在做性能测试时,如果有一个性能测试结果实时展示的页面,可以极大的提高我们对系统性能表现的掌握程度,进而提高我们的测试效率.但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载 ...

  7. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(二)

    在上一篇博文中,主要是讲了InfluxDB的配置,博文链接:https://www.cnblogs.com/hong-fithing/p/14453695.html,今天来分享下Jmeter的配置. ...

  8. jmeter的性能监控框架搭建记录(Influxdb+Grafana+Jmeter)

    查看笔记 http://note.youdao.com/noteshare?id=c700365713abb98bd3d10e6f45393af9&sub=6F4E14FF3F9D4167AE ...

  9. 性能测试监控平台:InfluxDB+Grafana+Jmeter

    前面的博客介绍了InfluxDB.Telegraf.Grafana的安装和使用方法,这篇博客,介绍下如何利用这些开源工具搭建性能测试监控平台... 前言 性能测试工具jmeter自带的监视器对性能测试 ...

随机推荐

  1. 用Qt写的简单屏保程序

    近日老大提别人家产品都有屏保程序,貌似我们也该有,简单在qtcn.org请教了一下,写了个小程序! 晕倒,半天没找到上传功能!我已经上传到qtcn上了,地址如下: http://www.qtcn.or ...

  2. C语言图形界面常用函数集锦

    (以下函数均应在图形方式初始之后使用(initgraph(a,b)),在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这 ...

  3. 使用Gson中的JsonElement所遇到的坑

    使用Gson中的JsonElement所遇到的坑 原文链接: https://blog.csdn.net/weixin_30326515/article/details/98196013 声明:此博客 ...

  4. 006一句话解决主机pc,Vmware虚拟机,开发板之间的ping问题

  5. Clover软件使用中遇到的问题

    安装Clover应用后不生效,Win + E 时仍然默认打开系统的资源管理器 解决: 进入ie浏览器的管理加载项窗口,显示栏选择所有加载项 找到 Explorer Watcher Class 项,确保 ...

  6. Go中的Package和Module分析

    Package 所谓package(包)其实就是代码的一种组织管理方式,代码多了就需要放入文件,文件多了就需要归类放入文件夹,就好比我们在给电脑装软件时会进行归类安装,其实也是有意无意对电脑软件安装的 ...

  7. 使用vue-baidu-map解析geojson

    这是后台给我的gejson: {"type":"FeatureCollection","features":[{"type&quo ...

  8. Essential C++学习笔记

    1.当我们调用一个函数时,会在内存中建立起一块特殊区域,称为“程序栈”,这块特殊区域提供了每个函数参数的存储空间,它也提供函数所定义的每个对象的内存空间--我们将这些对象称为局部对象.一旦函数完成,这 ...

  9. 【Java基础总结】字符串

    1. java内存区域(堆区.栈区.常量池) 2. String length() //长度 //获取子串位置 indexOf(subStr) lastIndexOf(subStr) //获取子串 c ...

  10. Go 每日一库之 flag

    缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态.写博客是一种方式,但不是每天都有想写的,值得写的东西. 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏 ...