put
put
/api/put
Method
POST
请求参数
Name | Data Type | Required | Description | Default |
---|---|---|---|---|
summary | Present | Optional | 返回结果是否显示success, failed, timeouts等统计信息。 | false |
details | Present | Optional | 会显示更详细的错误信息在errors里,包括具体是哪个数据点写入出错。建议开启此参数,这样能定位到哪些数据点写入出错。 | false |
sync | Boolean | Optional | 是否使用同步写入模式。非同步模式性能会略好于同步模式。但是非同步模式由于写入是立即返回成功的,实际数据并不一定真的写入成功。这个参数根据实际需要可以选择开启。 | false |
sync_timeout | Integer | Optional | 超时时间,写入数据点到达一定时间后没有返回,会被认为写入超时。在sync模式下有效,需要开启details才能看到哪些数据点写入超时。默认值0,表示永远不会超时,一直等。单位毫秒。 | 0 |
请求体
// 单数据点
{
"metric": "sys.cpu.nice",
"timestamp": 1346846400,
"value": 18,
"tags": {
"host": "web01",
"dc": "lga"
}
}
// 多数据点
[
{
"metric": "sys.cpu.nice",
"timestamp": 1346846400,
"value": 18,
"tags": {
"host": "web01",
"dc": "lga"
}
},
{
"metric": "sys.cpu.nice",
"timestamp": 1346846400,
"value": 9,
"tags": {
"host": "web02",
"dc": "lga"
}
}
]
返回结果
返回结果根据参数不通,会有所不一样(具体可以参考下方示例)。不能仅通过HTTP response status是否为200来判断请求是否成功。如果带了summary或者details参数,即使写入有异常,返回也会是200,但是会在返回结果中带上异常带信息。
示例
下面我们将使用curl演示一下,首先准备一个req.json文件,内容如下:
{
"metric": "aliyun.opentsdb.test",
"timestamp": 1543982710,
"value": 100,
"tags": {
"tagK": "tagV"
}
}
1.不带任何参数
curl -i -X POST -d @./req.json http://localhost:4242/api/put
// 返回
// 空
2.带上summary参数
curl -i -X POST -d @./req.json http://localhost:4242/api/put?summary
// 返回
{
"success": 1,
"failed": 0
}
注意这里因为默认使用的是非同步模式,即使你看到success为1,也不代表此时数据点真的已经写入完成。
3.带上details参数
curl -i -X POST -d @./req.json http://localhost:4242/api/put?details
// 返回
{
"success": 1,
"failed": 0,
"errors": [ ]
}
我们看到会多一个errors,如果写入有异常会在这里面包含异常的数据点
4.带上sync和timeout参数
curl -i -X POST -d @./req.json 'http://localhost:4242/api/put?sync&details&timeout=30000'
// 返回
{
"success": 1,
"failed": 0,
"errors": [ ]
}
返回结果没有区别,但是能保证数据已经被写入底层HBase了。
5.模拟一些异常情况,看看返回情况
curl -i -X POST -d @./req.json 'http://localhost:4242/api/put?sync&details&timeout=30000'
// 返回
{
"success": 0,
"failed": 1,
"errors": [
{
"datapoint": {
"metric": "aliyun.opentsdb.test",
"timestamp": 1543982710,
"value": "100",
"tags": {
"tagK": "tagV"
}
},
"error": "Storage exception: Mock exception."
}
]
}
这里虽然有异常,但是HTTP response status会是200。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论