
# OpenTSDB HTTP API接口介绍
OpenTSDB提供了基于HTTP或HTTPS的应用程序接口。请求方式是通过向资源对应的路径发送标准的HTTP请求，请求包含GET、POST方法。它的接口与开源OpenTSDB保持一致，请参见<https://opentsdb.net/docs/build/html/api_http/index.html>。
请求以及响应实体的类型为：application/JSON
请求以及响应实体的编码为：ISO-8859-1
![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
- HTTP协议本身有安全风险，HTTPS是安全协议，建议使用HTTPS连接方式。
- OpenTSDB基于HTTP提供了访问其的RESTful接口，而RESTful接口本身具有语言无关性的特点，凡是支持HTTP请求的语言都可以对接OpenTSDB。
 
#### 使用Java API操作OpenTSDB
OpenTSDB提供了基于HTTP或HTTPS的应用程序接口，可以使用Java API调用相关接口操作其数据，详情请参考开发程序章节。
#### 使用curl命令操作Opentsdb
- 写入数据。例如，录入一个指标名称为testdata，时间戳为1524900185，值为true，标签为key，value的指标数据。
  ```
  curl -ki -X POST -d '{"metric":"testdata", "timestamp":1524900185, "value":"true", "tags":{"key":"value"}}' https://<tsd_ip>:4242/api/put?sync
  ```
  \<tsd_ip\>表示所需写入数据的Opentsdb服务的TSD实例的IP地址。
  ```
  HTTP/1.1 204 No Content
  Content-Type: application/json; charset=UTF-8
  Content-Length: 0
  ```
  
- 查询数据。例如，可查询指标testdata在过去三年中的汇总信息。
  ```
  curl -ks https://<tsd_ip>:4242/api/query?start=3y-ago\&m=sum:testdata | python -m json.tool
  ```
  - \<tsd_ip\>：所需访问Opentsdb服务的TSD实例IP或主机名。
  
  - \<start=3y-ago\\\&m=sum:testdata\>：在请求中可能无法识别"\&"符号，需对其进行转义。
  
  - \<python -m json.tool\>（可选）: 把响应的请求转换为json格式。
  
  
  ```
  [
      {
          "aggregateTags": [],
          "dps": {
              "1524900185": 1
          },
          "metric": "testdata",
          "tags": {
              "key": "value"
          }
      }
  ]
  ```
  
- 查询tsd状态信息。例如，可查询连接HBase的客户端信息。
  ```
  curl -ks https://<tsd_ip>:4242/api/stats/region_clients | python -m json.tool
  ```
  \<tsd_ip\>：所需访问Opentsdb服务的TSD实例IP地址。
  ```
  [
      {
          "dead": false,
          "endpoint": "/192.168.2.187:16020",
          "inflightBreached": 0,
          "pendingBatchedRPCs": 0,
          "pendingBreached": 0,
          "pendingRPCs": 0,
          "rpcResponsesTimedout": 0,
          "rpcResponsesUnknown": 0,
          "rpcid": 78,
          "rpcsInFlight": 0,
          "rpcsSent": 79,
          "rpcsTimedout": 0,
          "writesBlocked": 0
      }
  ]
  ```
  
