OpenTSDB是主要由Yahoo维护、可扩展、分布式的时序数据库,OpenTSDB Reader插件实现了从OpenTSDB读取数据。

OpenTSDB与阿里巴巴自研TSDB的关系与区别,请参见相比OpenTSDB优势

目前OpenTSDB Reader仅支持脚本模式配置方式。

实现原理

在底层实现上,OpenTSDB Reader通过HTTP请求连接到OpenTSDB实例,用/api/config接口获取其底层存储HBase的连接信息。然后通过AsyncHBase框架连接HBase,以Scan的方式将数据点扫描出来。整个同步的过程通过Database、Metric和时间段进行切分,即某个Metric在某一个小时内的数据迁移,组合成一个迁移Task。

约束限制

  • 指定起止时间会被自动转为整点时刻,例如2019-4-18的[3:35, 4:55),会被转为[3:00, 4:00)
  • 目前仅支持兼容OpenTSDB 2.3.x版本。
  • 不可直接使用/api/query查询获取数据点,需要连接OpenTSDB的底层存储。

    因为通过OpenTSDB的HTTP接口(/api/query)读取数据,在数据量较大的情况下,会导致OpenTSDB的异步框架报CallBack过多的异常。所以通过连接底层HBase存储,以Scan的方式扫描数据点,可避免此问题。且通过指定Metric和时间范围,可顺序扫描HBase表,提高查询效率。

支持的数据类型

类型分类 数据集成column配置类型 TSDB数据类型
字符串 string TSDB数据点序列化字符串,包括timestamp、metric、tags和value。

参数说明

参数 描述 是否必选 默认值
endpoint OpenTSDB的HTTP连接地址。 是,格式为http://IP:Port
column 数据迁移任务需要迁移的Metric列表。
beginDateTime 和endDateTime配合使用,用于指定哪个时间段内的数据点需要被迁移。 是,格式为yyyyMMddHHmmss
说明 指定起止时间会自动忽略分钟和秒,转为整点时刻。例如2019-4-18的[3:35, 4:55)会被转为[3:00, 4:00)
endDateTime 和beginDateTime配合使用,用于指定哪个时间段内的数据点需要被迁移。 是,格式为yyyyMMddHHmmss
说明 指定起止时间会自动忽略分钟和秒,转为整点时刻。例如2019-4-18的[3:35, 4:55)会被转为[3:00, 4:00)

向导开发介绍

暂不支持向导模式开发。

脚本开发介绍

配置一个从OpenTSDB数据库同步抽取数据到本地的作业。

```json
{
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "concurrent": 1,
            "throttle": true
        }
    },
    "steps": [
        {
            "category": "reader",
            "name": "Reader",
            "parameter": {
                "endpoint": "http://host:4242",
                "column": [
                    "xc"
                ],
                "beginDateTime": "20190101000000",
                "endDateTime": "20190101030000"
            },
            "stepType": "opentsdb"
        },
        {
            "category": "writer",
            "name": "Writer",
            "parameter": {},
            "stepType": ""
        }
    ],
    "type": "job",
    "version": "2.0"
}
```

性能报告

  • 性能数据特征

    从Metric、时间线、Value和采集周期四个方面进行描述。

    • Metric:指定一个Metric为m。
    • tagkv:前四个tagkv全排列,形成10*20*100*100=2,000,000条时间线,最后IP对应2,000,000条时间线,从1开始自增。
      tag_k tag_v
      zone z1~z10
      cluster c1~c20
      group g1~100
      app a1~a100
      ip ip1~ip2,000,000
    • value:度量值为[1, 100]区间内的随机值。
    • interval:采集周期为10秒,持续摄入3小时,总数据量为3*60*60/10*2,000,000=2,160,000,000个数据点。
  • 性能测试结果
    通道数 数据集成速度(Rec/s) 数据集成流量(MB/s)
    1 215,428 25.65
    2 424,994 50.60
    3 603,132 71.81