TICK Stack 之 influxDB
前面说到,JMeter修改了.jtl的格式后,无法生成测试结果报表,而即便使用JMeter的报表,面对7、8G大小的.jtl,生成报表将非常耗时。往往为了等报告,1天的时间就过去了。
先想想我们性能测试人员或运维人员都要面临的资源监控问题。如:
- 按时间序列保存资源指标
- 保存的指标能被快速、直观、实时地查询
- 最好能可视化的方式呈现趋势
- 资源保存安全可靠
- …
TICK就是用来解决这一系列问题的架构。下面一起来看看。
TICK 是什么
TICK 是由 influxdata 公司研发的一套解决方案,能用于资源监控、存储和查询,并具有丰富的插件支持,在物联网也有广泛用途。
TICK 是一个缩写,包含了四个部分:
- Telegraf:是一个 plugin-driver 服务器,用于收集和报告指标。简单来说就是从其运行的系统中获取各种指标,然后通过输出插件将指标数据发送到各种其他的数据存储服务或消息队列中,包括InfluxDB、Graphite、MQTT、Kafka等等。
- InfluxDB:是一个时间序列数据库(意味着数据发生的时间戳与数据本身同样重要),用于处理高写入和查询的场景,并且具有专门为时间戳数据设计的存储引擎,但更新和插入数据操作会受限。对于DevOps监控、物联网监控和实时分析等用例特别有帮助。
- Chronograf:TICK 的管理用户界面和可视化组件,可以通过它配置监控和警报的设置。
- Kapacitor:是一个原生的数据处理引擎,他可以处理来自 influxDB 的流数据和批数据,并允许我们插入自定义的逻辑和自定义的函数,以处理警报等操作。
四者关系如下图:
InfluxDB 关键概念
【以下内容来自官网资料 InfluxDB key concepts】
influxDB 数据元素
InfluxDB 使用时间戳、字段键、字段值、标签等元素来构造数据,其中InfluxDB 2.3版本包含以下几种数据元素:
- timestamp
- field key
- field value
- field set
- tag key
- tag value
- tag set
- measurement
- series
- point
- bucket
- bucket schema
- organization
示例:
_time | _measurement | location | scientist | _field | _value |
---|---|---|---|---|---|
2019-08-18T00:00:00Z | census | klamath | anderson | bees | 23 |
2019-08-18T00:06:00Z | census | portland | mullen | ants | 32 |
_time:Timestamp
_measurement:measurement
location:tag value
scientist:tag value
_field:field key
_value:field value
Timestamp
所有存储在influxDB中的数据都有 _time
列,用于存储纳秒级别的数据戳,因此时间戳的精度非常重要。另外,influxDB可以 RFC3339 UTC 标准展示时间戳。
Measurement <string>
measurement
类似关系型数据库中的表,但又不止于此,measurement
更多用于描述我们的数据,是我们每一个 point
中的一个字段。比如上面的 census(普查) 告诉我们 field values
的23和32分别用来统计bees
(蜜蜂)和ants
(蚂蚁)。
Fields <string>
一个 field
包含了 field key
和 field value
。
field key <string>
field key
字段的名字,在例子中就是 bees
和 ants
。不唯一。
field value <strings, floats, integers, or booleans>
field value
字段的值。不唯一。
field set
一个与 timestamp
相关联的 field key-value 集合。如:
census bees=23i,ants=30i 1566086400000000000
census bees=28i,ants=32i 1566086760000000000-----------------Field set
field
在 influxDB 中是必须字段,但不生成索引。因此如果查询的是field
字段的值,那将扫描所有的fields
,效率会非常低,所以常将需要查询的数据保存在tags
中。
Tags
在示例中,location 和 scientist 就是 tags
之一,它包含 tag keys
和 tag values
,用来保存字符串和元数据。
Tag key
在示例中,location 和 scientist 就是 tag key
。
更多关于 tag key
的信息可以参考 Line protocol – Tag set。
Tag value
在示例中,tag key
localtion 拥有2个 tag value
:klamath 和 portland,对 tag key
scientist 来说同样。
更多关于 tag value 的信息可以参考 Line protocol – Tag set。
Tag set
集合 tag
的 key-value 键值对便是 tag set
,如示例中包含2个 tag set
:
location = klamath, scientist = anderson
location = portland, scientist = mullen
tags
是可选的,我们存储的数据中可以不包含。但tags
可以用于索引,因此对tags
的查询比对fields
的查询要快,所以tags
适合存储经常查询的元数据。
当
tags
包含很多高度可变信息时(如UUID、哈希或随机值),会导致数据库出现大量唯一tags
,成为高序列基数(high series cardinality)。而高序列基数是很多数据库负载过高的主要因素。更多信息可参考 series cardinality。
为什么架构(schema)很重要?
这里的架构(schema)指我们如何组织我们写入influxdb的数据。在示例中,如果我们经常需要查询的是 bees 或 ants 的数量,则可以把 bees 或 ants 设为 tags
,而 location 和 scientist 则设置为 fields
。
Bucket schema
bucket
具有显式模式类型存储的特点,需要为每一个 bucket
设定一个 bucket schema
(包含标签、字段和时间戳)。也就是我们统计每一个字段的类型。那些为 fields
、哪些为 tags
。
Series
包括 seires keys
和 series
。
Seires keys
包含 measurement
、tag set
和 field key
。比如示例中的 series keys
如下:
_measurement | tag set | _field |
---|---|---|
census | location=klamath,scientist=anderson | bees |
census | location=klamath,scientist=anderson | ants |
series
一个 seires
包含时间戳和 field values
并和 series key
对应。比如示例中的 seires key
和 series
对应:
# series key
census,location=klamath,scientist=anderson bees# series
2019-08-18T00:00:00Z 23
2019-08-18T00:06:00Z 28
在设计 schema 构和使用 InfluxDB 中的数据时,理解
series
的概念是必不可少的。
Point
一个 point
包含 series key
、field value
、timestamp
。
比如示例中的一个 point
如下:
2019-08-18T00:00:00Z census ants 30 portland mullen
Bucket
就像关系型数据库中的 database,但多了保留期(retention period
)的概念,即每个 point
保留的持续时间。一个 bucket
属于一个 organization
。有关 bucket
更多信息可查看Manage buckets。
Organization
organization
是一组用户的工作空间,所有 dashboards
、 tasks
、buckets
和 users
都属于一个 organization
,更多信息可查看 Manage organizations。
TICK Stack 之 influxDB相关推荐
- SpringBoot整合TICK(Telegraf+InfluxDB+Chronograf +Kapacitor)监控系列之一:InfluxDB
引言 最近项目中需要使用TICK监控方案实现对于服务器运行状态.服务运行状态等运行时状态监控以及告警.所谓TICK即为Telegraf+InfluxDB+Chronograf +Kapacitor.本 ...
- tig 使用_使用TIG监控机器
tig 使用 在15分钟内监控您自己的主机 (Monitor Your Own Host Within 15 Minutes) (This story/howto/tutorial assumes y ...
- 夏天面试男生穿什么_夏天什么时候?
夏天面试男生穿什么 May the 2nd and it is still freezing cold- gah! 5月2日,天气仍然严寒--啊! I have noticed a couple of ...
- 再不懂时序就 OUT 啦!,DBengine 排名第一时序数据库,阿里云数据库 InfluxDB 正式商业化!...
云数据库 InfluxDB® 版介绍 阿里云数据库 InfluxDB® 版已于近日正式启动商业化 . 云数据库 InfluxDB® 是基于当前最流行的开源数据库 InfluxDB 提供的在线数据库服务 ...
- 下一个计划 : .NET/.NET Core应用性能管理
前言 最近几个月一直在研究开源的APM和监控方案,并对比使用了Zipkin,CAT,Sky-walking,PinPoint(仅对比,未实际部署),Elastic APM,TICK Stack,Pro ...
- 程序员必须关注的技术趋势,内附PDF下载链接
点击关注 InfoQ,置顶公众号 接收程序员的技术早餐 作者|ThoughtWorks 编辑|小智 ThoughtWorks 已于昨日发布了最新一期的技术雷达,InfoQ 第一时间拿到了先手资料,提取 ...
- 微服务架构系列一:关键技术与原理研究
导语:人不为己,天诛地灭这个成语中的"为"念作wéi,阳平二声,是"修养,修为"的意思.成语的意思是:如果人不修身,那么就会为天地所不容.本意并不是经常被很多人 ...
- TDengine 在IT运维监控领域的应用
目录 前言 一.TD 特点 二.安装部署 2.1 部署 2.2 验证 三.应用领域 3.1 运维监控 3.2 远端扩展 总结 前言 TDengine 由北京涛思数据科技有限公司(TAOS Data)自 ...
- Telegraf 简单使用介绍
Telegraf 使用说明 本文档提供了 telegraf 的简单配置说明,其中: 配置多个配置文件的示例,可参见章节 配置多个配置文件示例 常用的输入插件(mysql.redis.prometheu ...
最新文章
- 虚拟摄像头 安卓版_林俊杰 ft. M.E.,联同视效大厂数字王国加码虚拟偶像
- 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~
- 不重复int数组里找不存在的值
- Golang实践录:调用C++函数的优化
- 异常来自 HRESULT:0x800A01A8
- ubuntux学习日记
- PriorityQueue优先队列
- Android开发案例 点击按钮出现 简易的消息提示框
- 程序员深度体验一周ChatGPT发现竟然....
- 曾仕强《领导的沟通艺术》
- IEEE ICCSE 2022 Call for Papers (征文公告)
- 如何通过网络数据的获取,做出这些数据分析项目?
- stm32 智能避障小车(二)之sg90
- 无线网卡无法与计算机usb,台式电脑主机安装USB无线网卡使用不了WiFi网络怎么办?...
- 个人购买的域名(需要公网服务器)快速配置免费的HTTPS证书【有手就行】
- Unity 组件批量复制
- 7-45 循环结构7:求x+x2+x3+...+xn的值 (50 分) 输入整数x,n(x与n均为1到8之间的整数),输出x1+x2+x3+...+xn(第二个数字表示指数)的值,不能使用pow函数
- 74LS175D四人抢答器设计
- 生产成本控制的方法有哪些
- CSS溢出显示三个小圆点
热门文章
- 【干货】Spring的生命周期(持续更新)
- 结合Unity开发中一些编程基础概念与原理性知识总结
- 元素浮动布局,微信聊天框
- unity遍历List时遇到的一个小问题
- 抖音主页一键复制微信号并跳转微信如何设置?
- 关于Taro3.0如何使用React-Native的Pushy以及android打包
- 制作命令行界面(CLI)带来乐趣和收益
- 为公益而跑 | 香港科技大学EMBA·2020云徒步公益大赛上线
- JAVA茶叶企业管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
- 北京化工大学1/17寒假集训题解(>1800)