All Things OpenTSDB

  • 时间:
  • 浏览:1
  • 来源:大发5分排列3_大发5分排列3官方

Row Key - 机会是有一个 多分配到UID的字符串,相似,对于有一个 多指标机会有有一个 多值为sys.cpu.user机会对于有一个 多标签其值机会为42

NOTE:都要就看,对于metric + tags相同的数据都有连续存放,且metic相同的数据也会连续存放,另有一个 多对于scan以及做aggregation都非常有帮助

OpenTSDB用HBase存储所有的时序(并非采样)来构建有一个 多分布式、可伸缩的时间序列数据库。它支持秒级数据挂接所有metrics,支持永久存储,都要做容量规划,并很容易的接入到现有的报警系统里。OpenTSDB都要从大规模的集群(包括集群中的网络设备、操作系统、应用应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得哪几种数据更容易你都要理解,如web化、图形化等。

相似以下几行数据是从tsdb-uid表中查询出来的数据,第有一个 多列为row key,第二列为”列族:列名”,第三列为值,对应为UID

举例:

在深入理解OpenTSDB时候,都要了解这人 基本概念。

Tags。有一个 多metric应该描述哪几种东西被测量,在OpenTSDB中,其不应该定义的太简单。通常,更好的做法是用Tags来描述具有相同维度的metric。Tags由tagk和tagv组成,前者表示有一个 多分组,后者表示有一个 多特定的项。

对于运维工程师而言,OpenTSDB都要获取基础设施和服务的实时情况汇报信息,展示集群的各种软硬件错误,性能变化以及性能瓶颈。对于管理者而言,OpenTSDB都要衡量系统的SLA,理解冗杂系统间的相互作用,展示资源消耗情况汇报。集群的整体作业情况汇报,都要用以辅助预算和集群资源协调。对于开发者而言,OpenTSDB都要展示集群的主要性能瓶颈,经常 再次经常 出现的错误,从而都要着力重点处里重要难题。

从上图都要看出tsdb-uid的表底部形态以及数据存储依据,对于有一个 多data point来说,其被保存到opentsdb时候,会对metricstagktagvmetric_metatagk_metatagv_meta生成有一个 多UID(如上图中的000001),为什么么让将其插入hbase表中,rowkey为UID,同都有存储多行记录,分别保存metricstagktagvmetric_metatagk_metatagv_meta到UID的映射。

总结一下,tsdb-uid表底部形态如下:

Value。有一个 多Value表示有一个 多metric的实际数值。

OpenTSDB的配置参数都要在命令行指定,也都要在配置文件中指定。配置文件使用的是java的properties文件,文件中key为小写,支持逗号连接字符串为什么么让这么有空格。所有的OpenTSDB属性都以tsdb开头,相似:

KairosDB主页:https://code.google.com/p/kairosdb/

Tree

从源代码安装gnuplot、autoconf、opentsdb以及tcollector,都要参考:OpenTSDB & tcollector 安装部署(Installation and Deployment)

OpenTSDB的tsdb启动时候,会监控指定的socket端口(默认为4242),接收到监控数据,包括指标、时间戳、数据、tag标签,tag标签包括tag名称ID和tag值ID。相似:

配置文件中可配置的属性请参考:Properties

命令行参数 > 配置文件 > 默认值

可选的单元测试依赖:

KairosDB是有一个 多快速可靠的分布式时间序列数据库,主要用于Cassandra当然也都要适用与HBase。KairosDB是在OpenTSDB基础上重写的,他不仅都要在HBase上存储数据还支持Cassandra。

关于为哪几种使用UID而不使用hashes,都要参考:why-uids

在OpenTSDB中拥有高基数的指标在查询过程中返回的值要多于低基数的指标,另有一个 多花费的时间也就不多。

OpenTSDB使用HBase作为后端存储,在安装OpenTSDB时候,都要先启动有一个 多hbase节点机会集群,为什么么让再执行建表句子src/create_table.sh创建hbase表。建表句子如下:

OpenTSDB是用java编写的,为什么么让项目构建都有用的java的依据后来使用的C、C++应用程序员构建项目的依据。运行时依赖:

相似,以下几行数据是从tsdb-uid表中查询出来的数据,第有一个 多列为row key,第二列为”列族:列名”,第三列为值,对应为UID

机会你使用的是hbase集群,则你还都要设置--zkquorum--cachedir对应的目录会产生这人 临时文件,你都要设置cron定时任务进行删除。上加--auto-metric,则当新的数据被搜集时自动创建指标。

索引表,用于展示树状底部形态的,相似于文件系统,以方便这人 系统使用,相似:Graphite

下载源代码,都要指定最新版本机会手动checkout

你都要在命令行中通过--config指定配置文件所在路径,机会这么指定,OpenTSDB会从以下路径寻找配置文件:

开启Metadata有以下几条参数:

机会配置了metadata,则name列族都要包括额外的metatata列。

Column Qualifiers - 里边并算是 列类型中并算是 。

首先安装必要依赖:

Column Value - 有一个 多无符号的整数,默认被编码为有一个 byte,其值为UID。

## 2.1 依赖 OpenTSDB依赖jdk和Gnuplot,Gnuplot都要提前安装,版本要求为最小4.2,最大4.4,执行以下命令安装即可:

Compaction。在OpenTSDB中,会将多列合并到一列之中以减少磁盘占用空间,这和hbase中的Compaction不一样。这人 过程会在TSD写数据机会查询过程中不定期的存在。

执行上述命令的结果如下:

占用4 bytes时表示以毫秒为单位的偏移,格式为:

在OpenTSDB中,所有数据存储在一张叫做tsdb的表中,这是为了充分利用hbase有序和region分布式的特点。所有的值都保存在列族t中。

rowkey为<metric_uid><timestamp><tagk1><tagv1>[...<tagkN><tagvN>],UID默认编码为3 Bytes,而时间戳会编码为4 Bytes

# 5. 谁在用OpenTSDB

同样,每有一个 多TSUID都要对应有一个 多TSMeta,记录在tsdb-uid中,其包括的字段有tsuidmetrictagslastReceivedcreated,可选的字段有description, notes,全版信息,都要查看/api/uid/tsmeta

## 3.12 Logging

Metadata。主要用于记录data point的这人 附加的信息,方便搜索和跟踪,分为UIDMeta和TSMeta。

## 3.5 如保查询数据 ## 3.6 CLI Tools

column qualifier 占用2 bytes机会4 bytes,占用2 bytes时表示以秒为单位的偏移,格式为:

Data Point。每有一个 多指标都要被记录为某有一个 多时间点的有一个 多数值。Data Point包括以下要素:

上图对应的有一个 多datapoint如下:

Cardinality。基数,在数学中定义为有一个 多集合中的这人 元素,在数据库中定义为有一个 多索引的这人 唯一元素,在OpenTSDB定义为:

Metric。有一个 多可测量的单位的标称。metric不包括有一个 多数值或有一个 多时间,其仅仅是有一个 多标签,中含数值和时间的叫datapoints,metric是用逗号连接的不允许有空格,相似:

tsdb支持以下参数:

你都要将哪几种参数编写到配置文件中,为什么么让通过--config指定该文件所在路径。

可选的编译时依赖:

TSUID。当有一个 多data point被写到OpenTSDB时,其row key格式为:<metric_UID><timestamp><tagk1_UID><tagv1_UID>[...<tagkN_UID><tagvN_UID>],不考虑时间戳句子,将其余要素都转换为UID,为什么么让拼在一起去,就都要组成为TSUID。

UID。在OpenTSDB中,每有一个 多metric、tagk机会tagv在创建的时候被分配有一个 多唯一标识叫做UID,让让这么人 组合在一起去都要创建有一个 多序列的UID机会TSUID。在OpenTSDB的存储中,对于每有一个 多metric、tagk机会tagv都存在从0时候时候时候始于的计数器,每来有一个 多新的metric、tagk机会tagv,对应的计数器就会加1。当data point写到TSD时,UID是自动分配的。你也都要手动分配UID,前提是auto metric被设置为true。默认地,UID被编码为3Bytes,每并算是 UID类型最多都要有16,777,21有一个 UID。你也都要修改源代码改为4Bytes。UID的展示有几种依据,最常见的依据是通过http api访问时,3 bytes的UID被编码为16进制的字符串。相似,UID为1的写为二进制的形式为000000000000000000000001,最为有一个 多无符号的byte数组,其都要表示为[0,0,1],编码为16进制字符串为000001,其中每一位左边都被补上0,机会其严重不足两位。故,UID为255的会显示为[0,0,255]0000FF

ts_ctr Column 计数器,用来记录有一个 多时间序列中存储的数据个数,其列名为ts_ctr,为8位有符号的整数。

对于时间戳为1292148123的数据点来说,其转换为以小时为单位的基准时间(上加小时后的秒)为1292142000,偏移为123,转换为二进制为1111011,机会该值为整数且长度为8位(对应为2byte,故最后3bit为200),故其对应的列族名为:0000011110110200,将其转换为十六进制为07B4

Time Series。有一个 多metric的中含多个tag的data point集合。

Column Qualifiers - 里边并算是 列类型中并算是 机会为metrics_metatagk_metatagv_meta

从里边都要看出一共创建了4张表,为什么么让都要设置算是压缩、算是启用布隆过滤、保存版本号等等,机会追求hbase读写性能,都要预建分区。

OpenTSDB使用LGPLv2.1+开源协议,目前版本为2.X。

每有一个 多UID都有有一个 多metadata记录保存在tsdb-uid表中,每有一个 多UID包括这人 不可变的字段,如uidtypenamecreated字段表示哪几种时候被创建,都要有这人 额外字段,如descriptionnotesdisplayName和这人 custom key/value对,全版信息,都要查看 /api/uid/uidmeta

通过以下命令创建指标:

TSMeta Column 和UIDMeta相似,其为UTF-8编码的JSON格式字符串

Column Value - 与UID对应的字符串,对于有一个 多*_meta列,其值机会是有一个 多UTF-8编码的JSON格式字符串。并非在OpenTSDB内部管理去修改该值,其中的字段顺序会影响CAS调用。

总结一下,tsdb表底部形态如下:

对于指标myservice.latency.avg的ID为:[0, 0, -69],reqtype标签名称的ID为:[0, 0, 1], foo标签值的ID为:[0, 1, 11], 标签名称的ID为:[0, 0, 2] web42标签值的ID为:[0, -7, 42],让让这么人 组成rowkey:

这人 表是OpenTSDB中不一起去间序列的有一个 多索引,都要用来存储这人 额外的信息。这人 表名称叫做tsdb-meta,该表这么有一个 多列族name,有一个 多列,分别为ts_metats_ctr,该表中数据如下:

Row Key tsdb表一样,其中不中含时间戳,<metric_uid><tagk1><tagv1>[...<tagkN><tagvN>]

配置参数优先级:

Timestamp。有一个 多绝对时间,用来描述有一个 多数值机会有一个 多给定的metric是在哪几种时候定义的。

有一个 多单独的较小的表叫做tsdb-uid用来存储UID映射,包括正向的和反向的。存在两列族,一列族叫做name用来将有一个 多UID映射到有一个 多字符串,另有一个 多列族叫做id,用来将字符串映射到UID。列族的每一行都要花费有以下三列中的有一个 多:

metadata的另外有一个 多形式是Annotations,全版说明,请参考annotations

value 使用8bytes存储,既都要存储long,也都要存储double。

机会有一个 多合法的配置文件这么找到为什么么让这人 都要参数这么设置,TSD应用程序将不想启动。

Row Key - 为UID

row表示格式为: 每个数字对应1 byte