All Things OpenTSDB

  • 时间:
  • 浏览:0

可选的单元测试依赖:

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

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

OpenTSDB使用HBase作为后端存储,在安装OpenTSDB但是 ,必须先启动三个白 hbase节点不可能 集群,但是 再执行建表句子src/create_table.sh创建hbase表。建表句子如下:

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

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

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

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

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

## 3.12 Logging

Tree

上图对应的三个白 datapoint如下:

Cardinality。基数,在数学中定义为三个白 集合中的這個元素,在数据库中定义为三个白 索引的這個唯一元素,在OpenTSDB定义为:

TSUID。当三个白 data point被写到OpenTSDB时,其row key格式为:<metric_UID><timestamp><tagk1_UID><tagv1_UID>[...<tagkN_UID><tagvN_UID>],不考虑时间戳句子,将其余主次都转换为UID,但是 拼在同時 ,就必须组成为TSUID。

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

Data Point。每三个白 指标必须被记录为某三个白 时间点的三个白 数值。Data Point包括以下主次:

這個表是OpenTSDB中不同時 间序列的三个白 索引,必须用来存储這個额外的信息。這個表名称叫做tsdb-meta,该表必须三个白 列族name,三个白 列,分别为ts_metats_ctr,该表中数据如下:

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

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

Row Key - 为UID

Column Value - 与UID对应的字符串,对于三个白 *_meta列,其值不可能 是三个白 UTF-8编码的JSON格式字符串。无需说在OpenTSDB内控 去修改该值,其中的字段顺序会影响CAS调用。

metadata的另外三个白 形式是Annotations,完整篇 说明,请参考annotations

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

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

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

对于指标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:

Column Qualifiers - 上面本身列类型中本身。

Timestamp。三个白 绝对时间,用来描述三个白 数值不可能 三个白 给定的metric是在哪些但是 定义的。

总结一下,tsdb-uid表内控 如下:

从上面必须看出一共创建了4张表,但是 必须设置是是不是压缩、是是不是启用布隆过滤、保存版本号等等,不可能 追求hbase读写性能,必须预建分区。

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

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

同样,每三个白 TSUID必须对应三个白 TSMeta,记录在tsdb-uid中,其包括的字段有tsuidmetrictagslastReceivedcreated,可选的字段有description, notes,完整篇 信息,必须查看/api/uid/tsmeta

## 3.5 咋样查询数据 ## 3.6 CLI Tools

从上图必须看出tsdb-uid的表内控 以及数据存储土土办法 ,对于三个白 data point来说,其被保存到opentsdb但是 ,会对metricstagktagvmetric_metatagk_metatagv_meta生成三个白 UID(如上图中的000001),但是 将其插入hbase表中,rowkey为UID,同前会 存储多行记录,分别保存metricstagktagvmetric_metatagk_metatagv_meta到UID的映射。

# 5. 谁在用OpenTSDB

给你将哪些参数编写到配置文件中,但是 通过--config指定该文件所在路径。

配置参数优先级:

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

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

OpenTSDB是用java编写的,但是 项目构建前会 用的java的土土办法 可是 使用的C、C++多多任务管理器 员构建项目的土土办法 。运行时依赖:

通过以下命令创建指标:

tsdb支持以下参数:

举例:

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

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

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

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

下载源代码,必须指定最新版本不可能 手动checkout

Time Series。三个白 metric的蕴含多个tag的data point集合。

对于运维工程师而言,OpenTSDB必须获取基础设施和服务的实时请况信息,展示集群的各种软硬件错误,性能变化以及性能瓶颈。对于管理者而言,OpenTSDB必须衡量系统的SLA,理解错综复杂系统间的相互作用,展示资源消耗请况。集群的整体作业请况,必须用以辅助预算和集群资源协调。对于开发者而言,OpenTSDB必须展示集群的主要性能瓶颈,无缘无故无缘无故出現的错误,从而必须着力重点补救重要问題。

不可能 配置了metadata,则name列族必须包括额外的metatata列。

关于为哪些使用UID而不使用hashes,必须参考:why-uids

可选的编译时依赖:

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

给你在命令行中通过--config指定配置文件所在路径,不可能 没人指定,OpenTSDB会从以下路径寻找配置文件:

Row Key - 不可能 是三个白 分配到UID的字符串,之类,对于三个白 指标不可能 有三个白 值为sys.cpu.user不可能 对于三个白 标签其值不可能 为42

每三个白 UID前会 三个白 metadata记录保指在tsdb-uid表中,每三个白 UID包括這個不可变的字段,如uidtypenamecreated字段表示哪些但是 被创建,必须有這個额外字段,如descriptionnotesdisplayName和這個custom key/value对,完整篇 信息,必须查看 /api/uid/uidmeta

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

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

Value。三个白 Value表示三个白 metric的实际数值。

value 使用8bytes存储,既必须存储long,也必须存储double。

开启Metadata有以下几块参数:

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

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

首先安装必要依赖:

在深入理解OpenTSDB但是 ,必须了解這個基本概念。

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

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

Column Qualifiers - 上面本身列类型中本身不可能 为metrics_metatagk_metatagv_meta

NOTE:必须看后,对于metric + tags相同的数据前会 连续存放,且metic相同的数据也会连续存放,但是 对于scan以及做aggregation都非常有帮助

总结一下,tsdb表内控 如下:

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

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

索引表,用于展示树状内控 的,之类于文件系统,以方便這個系统使用,之类:Graphite

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

不可能 三个白 合法的配置文件没人找到但是 這個必须参数没人设置,TSD多多任务管理器 将无需启动。