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'