histogram
适用于 OpenTSDB 2.4
尝试将直方图数据指向存储。请注意,Telnet 样式 API 可能无法正确处理 UTF-8 字符,因此请改用/api/histogram方法或直接使用 Java API。
Note
由于套接字是异步读写的,因此响应可能会出现乱码。最好将其与 UDP 套接字类似,因为您可能并不总是知道是否将数据放入其中。如果您需要 true 的同步写入并保证数据可以存储,请使用 HTTP 或 Java API。
Warning
2.4 中实现的直方图在查询时不支持导数计算(例如费率)。编写直方图时,它们应该以固定的间隔来自每个来源,并且必须仅反映该特定间隔的测量值。例如。如果源要每 5 分钟报告一次延迟直方图,则源应每 5 分钟创建一个新的直方图对象,将其填充测量值,将其写入 TSDB,并在接下来的 5 分钟间隔内创建一个新的空直方图。
Request
命令格式为:
put <metric> <timestamp> [<id>] <value> <tagk_1>=<tagv_1>[ <tagk_n>=<tagv_n>]
Note:
-
由于字段是用空格分隔的,因此 Metrics 和标记值可能不包含空格。
-
时间戳记必须为正 Unix 纪元时间戳记。例如。
1479496100
代表Fri, 18 Nov 2016 19:08:20 GMT
-
对于除内置简单存储桶直方图以外的其他实现,ID 必须是介于 0 到 255 之间的数字值,该数字值必须与
tsd.core.histograms.config
设置中定义的 Map 直方图编解码器的标识符相匹配。 -
该值必须是简单的存储桶直方图(在下面定义),或者是对给定直方图类型进行编码的以 64 为基数的二进制数据。 注意: 发送二进制数据时需要直方图 ID。
-
必须至少存在一个标签对。可以在其他标签对之间添加空格。
Value Encoding:
对于简单的桶状直方图实现,该值是由等号分隔的键/值对的分号分隔的列表。所有值(等于运算符的右侧)必须为带符号整数。左侧的值是键字符u
或o
,带符号的整数或带符号的浮点值。数字代表用逗号分隔的存储桶上下限。键/值可以按任何 Sequences 出现。左侧按键 Descriptors 为:
Key | Data Type | Description | Example |
---|---|---|---|
u | Character | 直方图的下溢计数。该字段是可选的,默认为 0. | u=0 |
o | Character | 直方图的溢出计数。该字段是可选的,默认为 0. | o=42 |
0,1.75 | String | 逗号分隔的存储桶下限(逗号的左侧)和上限(逗号的右侧)。连续存储桶的上限和下限必须重叠。即我们可能有两个存储桶0,1.75=12 和1.75,3.5=16 。 | 0,1.75=12 |
Examples
put sys.if.bytes.out 1479496100 u=0:o=1:0,1.5=42:1.5,5.75=24 host=web01 interface=eth0
put sys.procs.running 1479496100 1 AgMIGoAAAAADAAAAAAAAAAAAAAAAAPA/AAAAAABARUAAAAAAAADwPwAAAAAAADhAAAAAAABARUA= host=web01
Response
成功的请求将不会返回响应。只有在出错时,套接字才会返回一行数据。一些示例如下所示:
请求和响应示例
put
put: illegal argument: not enough arguments (need least 4, got 1)
put metric.foo notatime 42 host=web01
put: invalid value: Invalid character 'n' in notatime
如果禁用了tsd.core.auto_create_metrics
,将返回以下内容。
put new.metric 1479496160 u=0:o=1:0,1.5=42:1.5,5.75=24 host=web01
put: unknown metric: No such name for 'metrics': 'new.metric'