跳转至

观测云工具包 / OpenWay 类

「OpenWay 类」是用于操作 OpenWay 的组件,可实现通过工作空间 Token 查询对应工作空间内的数据。

1. 快速开始

guance_toolkit__guance导入OpenWay,并使用工作空间 Token 初始化OpenWay后即可使用。

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import json
from guance_toolkit__guance import OpenWay

def run():
    openway = OpenWay('tkn_xxxxx')

    # 典型使用方式
    dql = '''M::cpu:(load5s)'''
    dql_res = openway.dql_query(dql, limit=1)
    print('典型使用方式:\n', json.dumps(dql_res, indent=2))

    # 日志类通过 time_range, search_after 翻页
    search_after = []
    time_range = [
        '2022-09-14T12:00:00+08:00',
        '2022-09-14T12:00:01+08:00',
    ]

    # 演示目的,只翻 2 页面
    for i in range(2):
        dql = '''L::re(`.*`):(message){ `source` IN ['gin'] }'''
        dql_res = openway.dql_query(dql, limit=1, time_range=time_range, search_after=search_after)
        print(f'日志类第【{i+1}】页:\n', json.dumps(dql_res, indent=2))

        # 下一页开始标志
        search_after = dql_res['content'][0]['search_after']

输出如下:

为缩短文档,JSON 输出缩减了部分换行

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[2022-09-20 17:37:05.707] [+0ms] 典型使用方式:
 {
  "content": [
    {
      "series": [
        {
          "name": "cpu",
          "columns": [ "time", "load5s" ],
          "values": [
            [ 1663027200056, 10 ]
          ]
        }
      ],
      "points": "",
      "cost": "19.265169ms",
      "is_running": false,
      "async_id": ""
    }
  ]
}
[2022-09-20 17:37:05.908] [+201ms] 日志类第【1】页:
 {
  "content": [
    {
      "series": [
        {
          "columns": [ "time", "message" ],
          "values": [
            [
              1663128000997,
              "[GIN] 2022/09/14 - 04:00:00 | 200 |    3.317484ms |     10.120.0.70 | GET      \"/v1/datakit/pull?token=****************24f2f97128a9c6813289c&filters=true\""
            ]
          ]
        }
      ],
      "points": "",
      "cost": "63ms",
      "total_hits": 1697,
      "search_after": [ 1663128000997, "L_1663128000997_ccgl3h2rnkq7doms8f10" ],
      "is_running": false,
      "async_id": ""
    }
  ]
}
[2022-09-20 17:37:06.060] [+151ms] 日志类第【2】页:
 {
  "content": [
    {
      "series": [
        {
          "columns": [ "time", "message" ],
          "values": [
            [
              1663128000997,
              "[GIN] 2022/09/14 - 04:00:00 | 200 |   13.559498ms |      10.120.0.6 | POST     \"/v1/election?token=****************24f2f97128a9c6813289c&namespace=k8s-03&id=k8s03-node08\""
            ]
          ]
        }
      ],
      "points": "",
      "cost": "67ms",
      "total_hits": 1697,
      "search_after": [ 1663128000997, "L_1663128000997_ccgl3h2rnkq7doms8f0g" ],
      "is_running": false,
      "async_id": ""
    }
  ]
}

2. OpenWay 类

OpenWay类用于生成操作 OpenWay 的对象。

参数列表:

参数 类型 必须/默认值 说明
workspace_token str 必须 工作空间 Token
guance_node str 观测云节点,默认国内杭州节点
详细见 观测云工具包 / 连接到其他观测云节点

dql_query(...)

OpenWay.dql_query(...)函数用于执行 DQL 语句,并返回 DQL 查询结果。

参数列表:

参数 类型 必须/默认值 说明
dql str 必须 DQL 语句
time_range [str, str] 符合 ISO 格式的时间列表
如:[ '2022-01-01T00:00:00+08:00', '2022-01-01T00:01:00+08:00' ]
更多参数 - - 请参考 观测云文档 / DataKit API

自动重试

本函数在执行后,如果产生错误,会自动在 1、2、5、10、10 秒后自动重试,并在 5 次重试后依然失败才会抛出错误。