一.命名方案
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/
- 地址:
- /api/put
- /api/put?summary 调试,返回汇总信息
- /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状态码和错误消息内容。
- 请求地址是/api/put?summary时,返回:
{
“failed”: 1, //整型,存储失败的数据点数量
“success”: 0 //整型,存储成功的数据点数量
}
- 请求地址是/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}
1F
请问如何用crul 发送json给http://10.0.101.145:4242/api/query ?