OpenTSDB

GreptimeDB支持通过 Telnet 或 HTTP API 使用 OpenTSDB 协议。

写入新数据

Telnet

GreptimeDB 完全支持 OpenTSDBput 命令格式:

put <metric> <timestamp> <value> <tagk1=tagv1[tagk2=tagv2...tagkN=tagvN]>

你可以使用 put 来写入新数据:

shell

  1. ~ % telnet 127.0.0.1 4242
  2. Trying 127.0.0.1...
  3. Connected to localhost.
  4. Escape character is '^]'.
  5. put sys.cpu.system 1667892080 3 host=web01 dc=hz
  6. put sys.cpu.system 1667892080 2 host=web02 dc=hz
  7. put sys.cpu.system 1667892080 2 host=web03 dc=hz
  8. put sys.cpu.system 1667892081 1 host=web01
  9. put sys.cpu.system 1667892081 4 host=web04 dc=sh
  10. put sys.cpu.system 1667892082 10 host=web10 dc=sh
  11. quit
  12. Connection closed by foreign host.
  13. ~ %

GreptimeDB将每个指标视为单独的表,并将标签作为其列。greptime_timestampgreptime_value 是两个保留列,对应于 put 命令中的时间戳和值。

GreptimeDB 将在您放置指标后自动创建指标表,因此您无需手动创建指标表。

注意

只支持 put 命令,其他命令如 histogramstats 不被支持。

HTTP API

GreptimeDB 还支持通过 HTTP 接口插入 OpenTSDB 数据,接口是 /opentsdb/api/put,使用的请求和响应格式与 OpenTSDB 的 /api/put 接口相同。

GreptimeDB 的 HTTP Server 默认监听 4000 端口。例如使用 curl 写入一个指标数据:

shell

  1. curl -X POST http://127.0.0.1:4000/v1/opentsdb/api/put -d '
  2. {
  3. "metric": "sys.cpu.nice",
  4. "timestamp": 1667898896,
  5. "value": 18,
  6. "tags": {
  7. "host": "web01",
  8. "dc": "hz"
  9. }
  10. }
  11. '

插入多个指标数据:

shell

  1. curl -X POST http://127.0.0.1:4000/v1/opentsdb/api/put -d '
  2. [
  3. {
  4. "metric": "sys.cpu.nice",
  5. "timestamp": 1667898896,
  6. "value": 1,
  7. "tags": {
  8. "host": "web02",
  9. "dc": "hz"
  10. }
  11. },
  12. {
  13. "metric": "sys.cpu.nice",
  14. "timestamp": 1667898897,
  15. "value": 9,
  16. "tags": {
  17. "host": "web03",
  18. "dc": "sh"
  19. }
  20. }
  21. ]
  22. '

注意

记得在路径前加上 GreptimeDB 的 HTTP API 版本 v1