openTSDB详解之 Put

本文译自:​​http://opentsdb.net/docs/build/html/api_telnet/put.html​

尝试往存储中写入数据。注意:UTF-8编码字符集可能不能通过Telnet API被正确处理,所以使用/api/put方法而不是直接使用Java API。

Note

因为socket被异步的读和写,响应可能是混乱的。最好的方式是:将这个包同UDP的方式处理,因为你可能并非总是知道是否数据是被成功写入。如果你的确要求同步写,保证数据成功写入到存储中,请使用HTTP或者Java APIs.

Request

命令格式是:​​put <metric> <timestamp> <value> <tagk_1>=<tagv_1>[ <tagk_n>=<tagv_n>]​

Note

  • 因为字段是空格分割,metric和tag values必须不包含空格。
  • 时间戳必须是一个正整数(Unix epoch timestamp)。例如:1479496100 代表的就是​​Fri, 18 Nov 2016 19:08:20 GMT​
  • 值必须是一个数字。它可以是一个正整数(java中long数据类型的最大值和最小值),一个浮点数或者是科学计数法(使用的格式是[-]<#>.<#>[e|E][-]<#>)。
  • 至少存在一个tag 对。另外的tag 对能够被添加(原文:​​Additional tag pairs can be added with spaces in between​​)

Examples

put sys.if.bytes.out 1479496100 1.3E3 host=web01 interface=eth0
put sys.procs.running 1479496100 42 host=web01

Response

一个成功的请求不会反悔一个响应。仅仅错误的时候,socket包将会返回一行数据。下面列举出一些例子:

Example Requests and Responses

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 1.3e3 host=web01
put: unknown metric: No such name for 'metrics': 'new.metric'