时序数据库TSDB

    查询操作

    获取度量(Metric)

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getMetrics()方法。

    如下代码可以获取metric列表:

    // 获取并打印Metric
    client.getMetrics()
        .then(response => console.log(response.body))        // 获取成功
        .catch(error => console.error(error));               // 获取失败,并返回错误类型

    执行结果:

    //  终端返回结果 
    {
    	metrics: [ 
    		'cpu_idle',
    		'cpu_idle1' 
    	] 
    }

    获取Field

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getFields()方法,您需要提供查询的metricName。

    如下代码可以获取Field列表:

    var metricName = <metricName>;
    // 获取并打印Field
    client.getFields(<metricName>)
        .then(response => console.log(response.body))        // 获取成功
        .catch(error => console.error(error));               // 获取失败,并返回错误类型

    执行结果:

    //  终端返回结果 
    { 
    	"fields": [
    		 "field1",
    		 "field2"
    	]
     }

    获取标签(Tag)

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getTags()方法,您需要提供查询的metricName。

    如下代码可以获取标签(Tag)列表:

    var metricName = <metricName>;
    // 获取并打印Tag
    client.getTags(<metricName>)
        .then(response => console.log(response.body))        // 获取成功
        .catch(error => console.error(error));               // 获取失败,并返回错误类型

    执行结果:

    //  终端返回结果 
    { 
    	tags: [ 
    		'tags1',
    		'tags2' 
    	] 
    }

    查询数据点

    单域查询数据点

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

    如下代码可以查询数据点:

    // 构建想要查询的queryList
    var queryList = [
        {
    	    "metric": "cpu_idle1",
    	    "filters": {
    	        "start": "1 hour ago",
    	        "tags": {
    	            "host": [
    	                "server1",
    	                "server2"
    	            ]
    	        },
    	        "value": ">= 10"
    	    },
    	    "groupBy": [
    	        {
    	            "name": "Tag",
    	            "tags": [
    	                "rack"
    	            ]
    	        }
    	    ]
    	}
    ];
    
    // 获取并打印查询结果
    client.getDatapoints(<queryList>)
        .then(response => console.log(JSON.stringify(response.body)))            // 获取成功
        .catch(error => console.error(error));                   // 获取失败,并返回错误类型

    执行结果:

    //  终端返回类似结果
    { 
    	results: [
    		{ 
    		   metric: 'humidity', 
    		   field: 'value',
    		   groups: [], 
    		   rawCount: 0 
    		} 
    	] 
    }

    多域查询数据点

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

    如下代码可以查询数据点:

    // 构建想要查询的queryList
    var queryList = [
        {
            "metric": "cpu_idle3",
            "fields": [
                "field1",
                "field2"
            ],
            "tags": [
                "rack",
                "host"
            ],
            "filters": {
                "start": "5 hour ago",
                "fields": [
                    {
                        "field": "field1",
                        "value": ">= 10"
                    },
                    {
                        "field": "field2",
                        "value": "<= 10"
                    }
                ],
                "tags": {
                    "rack": [
                        "rack1"
                    ],
                    "host": [
                        "server1"
                    ]
                },
                
            },
            "groupBy": [
                {
                    "name": "Tag",
                    "tags": [
                        "rack",
                        "host"
                    ]
                }
            ],
            "limit": 1000
        }
    ];
    // 获取并打印查询结果
    client.getDatapoints(<queryList>)
        .then(response => console.log(JSON.stringify(response.body)))           // 获取成功
        .catch(error => console.error(error));                   // 获取失败,并返回错误类型
        

    执行结果:

    //  终端返回类似结果
    { 
    	results: [ 
    		{ 
    			metric: 'humidity',
    	 		field: 'value', 
    			groups: [], 
    			rawCount: 0
    	   }
    	]
    }

    使用插值方式查询数据点

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

    如下代码可以对数据点进行插值:

    // 构建想要查询的queryList
    var queryList = [
        {
            "metric": "cpu_idle3",
            "field": "field1",
            "filters": {
               "start": "1 hour ago",
               "tags": {
                  "host": [
                     "server1"
                     ]
                  }
             },
             "fill": {
                "type": "Linear",
                "interval": "5 minutes",
                "maxWriteInterval": "30 minutes"
             }
         }
     ];
    // 获取并打印查询结果
    client.getDatapoints(<queryList>)
         .then(response => console.log(JSON.stringify(response.body)))             // 获取成功
         .catch(error => console.error(error));                   // 获取失败,并返回错误类型

    执行结果:

    //  终端返回类似结果
    { 
    	results: [ 
    		{ 
    			metric: 'humidity', 
    			field: 'value',
     			groups: [],
     			rawCount: 0 
      		} 
      	]
    }

    分页查询数据点

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
    3. 根据返回结果的result.truncated判断是否还有下一页数据,有则执行2,否则结束。

    示例代码:

    // 构建想要查询的query
    var query = {
        "metric": "cpu_idle1",
        "filters": {
            "start": "1 hour ago",
        }
    };
    var fetchNext = nextMarker => {
        query.marker = nextMarker;                             // 设置marker,以便获取后面的数据
        client.getDatapoints([query,])                         // 获取数据
            .then(deealWithResponse)                           // 设置处理结果的callback
            .catch(dealWithError);                             // 设置处理error的callback
    };
    var deealWithResponse = response => {                      // 处理结果
        console.log(JSON.stringify(response.body))             // 打印结果
        if (response.body.results[0].truncated) {              // 后面还有数据
            fetchNext(response.body.results[0].nextMarker);    // 获取下一页
        }
    }
    var dealWithError = error => console.error(error);         // 处理error
    
    client.getDatapoints([query,])                             // 获取数据
        .then(deealWithResponse)                               // 设置处理结果的callback
        .catch(dealWithError);                                 // 设置处理error的callback

    SQL查询接口

    NodeSDK在0.3.1版本中支持了SQL查询接口,支持标准的ANSI SQL语义。

    基本流程

    1. 创建TsdbDataClient。
    2. 执行getRowsWithSql(sql)方法

    如下代码可以使用SQL查询数据点:

      var sql = 'select * from cpu_idle';
      client.getRowsWithSql(sql)
          .then(function (response) {
                console.log(response.body);
          });
    上一篇
    写入操作
    下一篇
    生成查询数据点的预签名URL