OpenTSDB数据写入HTTP API接口

默北 OpenTSDB1 25,6046字数 2388阅读7分57秒阅读模式

一.命名方案

OpenTSDB命名格式有点类似于RRD样式,只不过引入了标记(tags),使得指标(metric)更具有代表性和通用性,可以共享许多独特的时间序列。通过标记的键值对组合来确定指标的唯一性,可以非常灵活的进行聚合函数的查询。

RRD如果要记录web1服务器的第一个CPU的用户空间使用量,命名的格式为web1.sys.cpu.0.user,如果有上千台服务器,每台多核CPU,那么需要命名很多来区别,如webN.sys.cpu.M.user。 对于OpenTSDB,可以这么命名sys.cpu.user host=web1,cpu=0。如果要汇总所有内核的值,只需sum:sys.cpu.user{host=web1}。如果要汇总上千台服务器的CPU值,只需sum:sys.cpu.user。比RRD命名格式更加的灵活通用。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

因此,对于要监控的对象命名,要定义一个相同的共性,便于汇总,同时,要能很好的表达监控的项目。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

二.指标命名规范

指标名称区分大小写,统一以小写字母命名。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

指标名称不能含有空格。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

指标名称只能含有下列字符:a-z,A-Z,0-9,-,_,.,/或Unicode字母。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

指标名称尽量精短。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

三.指标值规范

指标值可以是整数也可以是浮点数。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

四.时间戳

UNIX时间戳,可以是秒或毫秒,必需是整数,且不能超过13位数。毫秒级的时间戳格式必需是1234567890123,最后三位代表毫秒数。对于应用程式生成的时间戳超过13位的,必需四舍五入至最高13位,否则报错。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

由于OpenTSDB底层存储系统HBase目前只支持秒级别的存储,因此对于毫秒级别的数据会转换成秒。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

五. 标记命名规范

标记是用来补充说明指标的,是指标的属性,来对指标进行差异性的定义。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

标记是一对键值对。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

每个指标至少有一个标记。通常是host=ip或host=hostname。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

OpenTSDB最多支持8个标记。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

标记区分大小写,统一以小写字母命名。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

标记不能含有空格。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

标记只能含有下列字符:a-z,A-Z,0-9,-,_,.,/或Unicode字母。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

六. HTTP API接口

为了节省带宽,该接口允许在一个单一的请求中提交多个数据点数据。每个数据点单独处理,如果其中某个数据点有问题不会影响其他数据点的存储。文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

  • 地址:
  1. /api/put
  2. /api/put?summary 调试,返回汇总信息
  3. /api/put?details 调试,返回详细信息
  • 方法:POST
  • 格式:
    {

metric:     ”lvs.connection.active”,              //必需,字符串,指标名称文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

timestamp:        1234567890,                            //必需,整型,时间戳文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

value:        11.11,                                             //必需,整型、浮点型、字符串,指标值文章源自运维生存时间-https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/

tags: {“host”:”web1”}                                     //必需,对象,标记对

}

  • 返回结果:

默认情况下,如果所有数据存储成功,响应一个204的状态码。如果有一个或多个数据点出错,返回400状态码和错误消息内容。

  1. 请求地址是/api/put?summary时,返回:
    {

“failed”: 1,                            //整型,存储失败的数据点数量

“success”: 0                         //整型,存储成功的数据点数量

}

  1. 请求地址是/api/put?details时,返回:
    {

"errors": [  …],             //数组,失败的数据点列表以及失败原因

"failed": 1,

"success": 0

}

七. HTTP API接口实例

1. /api/put

# curl -i -X POST -d '{"metric":"proc.loadavg.15m", "timestamp":1413015492, "value":8, "tags":{"host":"10.0.101.145"}}' http://10.0.101.145:4242/api/put 
HTTP/1.1 204 No Content
Content-Type: application/json; charset=UTF-8
Content-Length: 0

2./api/put?summary

# curl -i -X POST -d '{"metric":"proc.loadavg.15m", "timestamp":1413015492, "value":8, "tags":{"host":"10.0.101.145"}}' http://10.0.101.145:4242/api/put?summary
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 24

{"failed":0,"success":1}

3. /api/put?details

# curl -i -X POST -d '{"metric":"proc.loadavg.15m", "timestamp":1413015492, "value":8, "tags":{"host":"10.0.101.145"}}' http://10.0.101.145:4242/api/put?details
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 36

{"errors":[],"failed":0,"success":1}
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 19/10/2014 01:00:23
  • 转载请务必保留本文链接:https://www.ttlsa.com/opentsdb/opentsdb-insert-data-http-api-interface/
  • OpenTSDB
  • 时间序列数据库
评论  1  访客  1
    • adair
      adair 9

      请问如何用crul 发送json给http://10.0.101.145:4242/api/query ?

    评论已关闭!