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:

对于简单的桶状直方图实现,该值是由等号分隔的键/值对的分号分隔的列表。所有值(等于运算符的右侧)必须为带符号整数。左侧的值是键字符uo,带符号的整数或带符号的浮点值。数字代表用逗号分隔的存储桶上下限。键/值可以按任何 Sequences 出现。左侧按键 Descriptors 为:

KeyData TypeDescriptionExample
uCharacter直方图的下溢计数。该字段是可选的,默认为 0.u=0
oCharacter直方图的溢出计数。该字段是可选的,默认为 0.o=42
0,1.75String逗号分隔的存储桶下限(逗号的左侧)和上限(逗号的右侧)。连续存储桶的上限和下限必须重叠。即我们可能有两个存储桶0,1.75=121.75,3.5=160,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'