查询操作
更新时间:2019-06-18
获取度量(Metric)
基本流程
- 创建TsdbDataClient。
- 执行getMetrics()方法。
如下代码可以获取metric列表:
Plain Text
1// 获取并打印Metric
2client.getMetrics()
3 .then(response => console.log(response.body)) // 获取成功
4 .catch(error => console.error(error)); // 获取失败,并返回错误类型
执行结果:
Plain Text
1// 终端返回结果
2{
3 metrics: [
4 'cpu_idle',
5 'cpu_idle1'
6 ]
7}
获取Field
基本流程
- 创建TsdbDataClient。
- 执行getFields()方法,您需要提供查询的metricName。
如下代码可以获取Field列表:
Plain Text
1var metricName = <metricName>;
2// 获取并打印Field
3client.getFields(<metricName>)
4 .then(response => console.log(response.body)) // 获取成功
5 .catch(error => console.error(error)); // 获取失败,并返回错误类型
执行结果:
Plain Text
1// 终端返回结果
2{
3 "fields": [
4 "field1",
5 "field2"
6 ]
7 }
获取标签(Tag)
基本流程
- 创建TsdbDataClient。
- 执行getTags()方法,您需要提供查询的metricName。
如下代码可以获取标签(Tag)列表:
Plain Text
1var metricName = <metricName>;
2// 获取并打印Tag
3client.getTags(<metricName>)
4 .then(response => console.log(response.body)) // 获取成功
5 .catch(error => console.error(error)); // 获取失败,并返回错误类型
执行结果:
Plain Text
1// 终端返回结果
2{
3 tags: [
4 'tags1',
5 'tags2'
6 ]
7}
查询数据点
单域查询数据点
基本流程
- 创建TsdbDataClient。
- 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
如下代码可以查询数据点:
Plain Text
1// 构建想要查询的queryList
2var queryList = [
3 {
4 "metric": "cpu_idle1",
5 "filters": {
6 "start": "1 hour ago",
7 "tags": {
8 "host": [
9 "server1",
10 "server2"
11 ]
12 },
13 "value": ">= 10"
14 },
15 "groupBy": [
16 {
17 "name": "Tag",
18 "tags": [
19 "rack"
20 ]
21 }
22 ]
23 }
24];
25
26// 获取并打印查询结果
27client.getDatapoints(<queryList>)
28 .then(response => console.log(JSON.stringify(response.body))) // 获取成功
29 .catch(error => console.error(error)); // 获取失败,并返回错误类型
执行结果:
Plain Text
1// 终端返回类似结果
2{
3 results: [
4 {
5 metric: 'humidity',
6 field: 'value',
7 groups: [],
8 rawCount: 0
9 }
10 ]
11}
多域查询数据点
基本流程
- 创建TsdbDataClient。
- 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
如下代码可以查询数据点:
Plain Text
1// 构建想要查询的queryList
2var queryList = [
3 {
4 "metric": "cpu_idle3",
5 "fields": [
6 "field1",
7 "field2"
8 ],
9 "tags": [
10 "rack",
11 "host"
12 ],
13 "filters": {
14 "start": "5 hour ago",
15 "fields": [
16 {
17 "field": "field1",
18 "value": ">= 10"
19 },
20 {
21 "field": "field2",
22 "value": "<= 10"
23 }
24 ],
25 "tags": {
26 "rack": [
27 "rack1"
28 ],
29 "host": [
30 "server1"
31 ]
32 },
33
34 },
35 "groupBy": [
36 {
37 "name": "Tag",
38 "tags": [
39 "rack",
40 "host"
41 ]
42 }
43 ],
44 "limit": 1000
45 }
46];
47// 获取并打印查询结果
48client.getDatapoints(<queryList>)
49 .then(response => console.log(JSON.stringify(response.body))) // 获取成功
50 .catch(error => console.error(error)); // 获取失败,并返回错误类型
51
执行结果:
Plain Text
1// 终端返回类似结果
2{
3 results: [
4 {
5 metric: 'humidity',
6 field: 'value',
7 groups: [],
8 rawCount: 0
9 }
10 ]
11}
使用插值方式查询数据点
基本流程
- 创建TsdbDataClient。
- 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
如下代码可以对数据点进行插值:
Plain Text
1// 构建想要查询的queryList
2var queryList = [
3 {
4 "metric": "cpu_idle3",
5 "field": "field1",
6 "filters": {
7 "start": "1 hour ago",
8 "tags": {
9 "host": [
10 "server1"
11 ]
12 }
13 },
14 "fill": {
15 "type": "Linear",
16 "interval": "5 minutes",
17 "maxWriteInterval": "30 minutes"
18 }
19 }
20 ];
21// 获取并打印查询结果
22client.getDatapoints(<queryList>)
23 .then(response => console.log(JSON.stringify(response.body))) // 获取成功
24 .catch(error => console.error(error)); // 获取失败,并返回错误类型
执行结果:
Plain Text
1// 终端返回类似结果
2{
3 results: [
4 {
5 metric: 'humidity',
6 field: 'value',
7 groups: [],
8 rawCount: 0
9 }
10 ]
11}
分页查询数据点
基本流程
- 创建TsdbDataClient。
- 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
- 根据返回结果的result.truncated判断是否还有下一页数据,有则执行2,否则结束。
示例代码:
Plain Text
1// 构建想要查询的query
2var query = {
3 "metric": "cpu_idle1",
4 "filters": {
5 "start": "1 hour ago",
6 }
7};
8var fetchNext = nextMarker => {
9 query.marker = nextMarker; // 设置marker,以便获取后面的数据
10 client.getDatapoints([query,]) // 获取数据
11 .then(deealWithResponse) // 设置处理结果的callback
12 .catch(dealWithError); // 设置处理error的callback
13};
14var deealWithResponse = response => { // 处理结果
15 console.log(JSON.stringify(response.body)) // 打印结果
16 if (response.body.results[0].truncated) { // 后面还有数据
17 fetchNext(response.body.results[0].nextMarker); // 获取下一页
18 }
19}
20var dealWithError = error => console.error(error); // 处理error
21
22client.getDatapoints([query,]) // 获取数据
23 .then(deealWithResponse) // 设置处理结果的callback
24 .catch(dealWithError); // 设置处理error的callback
SQL查询接口
NodeSDK在0.3.1版本中支持了SQL查询接口,支持标准的ANSI SQL语义。
基本流程
- 创建TsdbDataClient。
- 执行getRowsWithSql(sql)方法
如下代码可以使用SQL查询数据点:
Plain Text
1 var sql = 'select * from cpu_idle';
2 client.getRowsWithSql(sql)
3 .then(function (response) {
4 console.log(response.body);
5 });