更新时间:2024-03-28 10:58:30

本文包括如下内容:

1. 查询指标模型列表

2. 根据指标模型ID查询指标数据

3. 根据指标模型IDS批量查询指标数据

 

 

AnyRobot指标模型查询接口参考文档:

文件内网获取地址:UniQuery API 文档

AnyShare归档地址示例:AnyShare://产品和服务资料(AISHU Documentation Center)/04.AnyRobot Family/AnyRobot Family 5/01-产品发布/各版本子文件夹/16-API参考手册/AnyRobot Family 5 UniQuery API 参考手册

1. 查询指标模型列表

1) 接口地址

https://{host}:{port}/api/data-model/v1/metric-models?name=backup_task_latest_timepoint

3) 请求参数说明
字段 类型 含义
name_pattern string 根据指标模型名称模糊查询,默认为空. name 不能同时存在
name string 根据指标模型名称精确过滤,默认为空. name_pattern 不能同时存在
metric_type String, Enum: "atomic", "complex" 指标类型,默认为空
query_type String, Enum: "promql", "dsl" 指标查询语言,默认为空
sort String, Enum: "update_time", "model_name" 排序类型,默认是update_time
direction String, Enum: "asc" "desc" 排序结果方向,可选ascdesc。 默认desc
offset integer 开始响应的项目的偏移量 范围需大于等于0,默认值0
limit integer 每页最多可返回的项目数; 分页可选1-1000-1表示不分页; 默认值10

4) 响应参数示例

{

  "entries": [

    {

      "id": 86,

      "name": "主机cpu使用率",

      "metric_type": "atomic",

      "data_view_id": "123abc",

      "data_view_name": "主机监控",

      "query_type": "promql",

      "formula": "avg(irate(node_cpu_seconds_total{name=~\"node-14-35\"}[5m])) by(name)",

      "date_field": "@timestamp",

      "date_format": "epoch_millis",

      "measure_field": "value",

      "unit_type": "timeUnit",

      "unit": "ms",

      "tags": [

        "some text",

        "some text"

      ],

      "custom_attribute": {

        "attribute": "abc"

      },

      "comment": "主机cpu使用率",

      "update_time": "2022-11-24 17:06:43"

    }

  ],

  "total_count": 1

}

5) 响应参数说明
entries Array of objects (DataMetricModel)条目列表
Array  id Integer, 指标模型 id
name String, 指标模型名称
metric_type String, Enum: "atomic" "complex"指标类型,分原子指标和复合指标。
data_view_id String, 数据视图id
data_view_name String, 数据视图名称
query_type String, Enum: "promql" "dsl"。指标查询语言。根据 category 和 datasource 来展示指标查询语言列表。
formula String, 计算公式
date_field String, 时间字段。当查询语言是 promql 时,此字段值为 @timestamp。当查询语言是 dsl 时序分析时,此字段值为 dsl 语句中的关于时间聚合分桶的聚合名称。
date_format String, Value: "epoch_millis"。时间格式。当查询语言是 promql 时,此字段值为 epoch_millis。当查询语言是 dsl 时,此字段值为 epoch_millis
measure_field String, 度量字段。当查询语言是 promql 时,此字段值为 value。当查询语言是 dsl 时,此字段值为 dsl 语句中的值聚合名称。
unit_type String Enum: "numUnit", "storeUnit", "percent", "transmissionRate", "timeUnit"。单位类型
unit String Enum: "none" "K" "Mil" "Bil" "Tri" "bit" "Byte" "KB" "MB" "GB" "TB" "PB" "%" "bps" "Kbps" "Mbps" "μs" "ms" "s" "m" "h" "day" "week" "month" "year"。度量单位
tags Array of strings,标签。 (可以为空)
custom_attribute Object,自定义属性(可以为空),map,可以包含任意键值对
comment String,指标模型备注(可以为空)
update_time string yyyy-MM-dd hh:mm:ss,更新时间
total_count Integer,总条数

2. 根据指标模型ID查询指标数据

1) 接口地址

POST  http://{host}:{port}/api/uniquery/v1/metric_models/{model_id}

2) 请求参数示例:

{

  "method": "GET",

  "instant": false,

  "start": 1646360670123,

  "end": 1646471470123,

  "step": "1m",

  "filters": [

    {

      "name": "labels.job",

      "value": "prometheus",

      "operation": "="

    }

  ]

}

3) 请求参数说明
methodrequired stringValue: "GET"  方法名,必为"GET"
instant boolean是否是即时查询。可选,默认为 false。当 instant = true 时,表示即时查询;当 instant = false 时,表示范围查询。
start integer 范围查询的开始时间。当 instant false 时,必须。 start=< unix_timestamp >,单位到毫秒。 例如: 1646360670123
end integer 范围查询的结束时间。当 instant false 时,必须。end=< unix_timestamp >,单位到毫秒。例如: 1646471470123
step string范围查询的步长。当 instant false 时,必须。step=< time_durations >,用一个数字,后面跟时间单位来定义。若不填单位,则默认按秒计算。时间单位可以是如下之一: ms - 毫秒; s - 秒; m - 分钟; h - 小时; d - 天; w - 周; y - 年;
time integer 即时查询的计算时间。 可选,默认是当前系统时间。当 instant true 时,time 生效,time=< unix_timestamp >,单位到毫秒。 例如: 1646471470123
look_back_delta string即时查询时从 time 往前回退的时间区间。当 instant true 时,可选,默认是5minlook_back_delta=< time_durations >,用一个数字,后面跟时间单位来定义。若不填单位,则默认按秒计算。时间单位可以是如下之一: ms - 毫秒; s - 秒; m - 分钟; h - 小时; d - 天; w - 周; y - 年;
filters Array of objects (Filter)过滤条件数组。可为空。当存在过滤条件时,过滤条件对象的字段都是必须的。
Array Name required String过滤字段名称
Valuerequired Array of any,过滤的值。 operation in 时,value 为任意基本类型的数组,且长度大于等于1;当 operation = != 时,value 为任意基本类型的值;当 operation range 时,value 是个由范围的下边界和上边界组成的长度为 2 的数值型数组。当 operation out_range , value 是一个长度为 2 的数组,对应过滤条件时是 字段 < value[0] || 字段 >= value[1]
operationrequired StringEnum: "in" "=" "!=" "range" "out_range" "like" "not_like" ">" ">=" "<" "<="  操作符。

4) 响应数据示例:

{

  "model": {

    "name": "model1",

    "metric_type": "atomic",

    "data_view_name": "xxx",

    "query_type": "promql",

    "formula": "cpu_second_total{}",

    "date_field": "@timestamp",

    "date_format": "epoch_millis",

    "measure_field": "value",

    "unit_type": "timeUnit",

    "unit": "s"

  },

  "datas": [

    {

      "labels": {

        "cpu": "1",

        "instance": "10.4.68.120:9101"

      },

      "date_values": [

        1669789800123,

        1669789900123

      ],

      "values": [

        10,

        11

      ]

    } 

  ],

  "step": "1m",

  "is_variable": false

}

5) 响应数据说明
Model object (MetricModel)   指标模型信息
  Name string,指标模型名称
metric_type StringEnum: "atomic" "complex" 指标类型
data_view_name String,数据视图名称
query_type StringValue: "promql"。查询语言
Formula String,计算公式
date_field String,时间字段。当查询语言是 promql 时,此字段值为 @timestamp
date_format string Value: "epoch_millis",时间格式。当查询语言是 promql 时,此字段值为 epoch_millis
unit_type stringEnum: "numUnit" "storeUnit" "percent" "transmissionRate" "timeUnit",单位类型
Unit string Enum: "none" "K" "Mil" "Bil" "Tri" "bit" "Byte" "KB" "MB" "GB" "TB" "PB" "%" "bps" "Kbps" "Mbps" "μs" "ms" "s" "m" "h" "day" "week" "month" "year",度量单位
measure_field String,度量字段。当查询语言是 promql 时,此字段值为 value
Datas Array of objects (MetricData)  指标数据
  Labels Map,普通维度 label mapkey 为字段名,value 为字段值,键值的类型都是 string
date_values Array of objects,时间值数组。为字符串或者数值类型
Values Array of numbers,度量值数组。数值类型
step String,范围查询时当前指标模型计算公式执行的步长。主要是为了兼容dsl中的日期直方图的 fixed_interval 是常量时,前端仪表盘画图使用。当查询语言是 promql 时,该值为请求的 step;当查询语言是 dsl 且日期直方图中使用了变量时,该值为请求的 step;当查询语言是 dsl 且日期直方图中使用了常量,该值为日期直方图中的常量。
is_variable Stringdsl 原子指标的指标模型中的计算公式是否使用了变量。默认是 false

3. 根据指标模型IDS批量查询指标数据

批量查询是对单个查询的接口进行了扩展,扩展的方案如下:

• /uniquery/v1/metric-models/{ids}  接口支持多id,多个模型id之间用逗号分割;

• path 中的模型id 是多个id(大于1个)时, 请求参数和响应数据都变成了数组。

请求体是个对象数组,请求参数对象与 path 中的模型id 一一对应。例如:

[

    {

        "method": "GET",

        "instant": false,

        "start": 1646360670123,

        "end": 1646471470123,

        "step": "1m",

        "filters": []

    },

    {

        "method": "GET",

        "instant": true,

        "time": 1646360670123,

        "look_back_delta": "10m",

        "filters": []

    }

]

返回的数据是个对象数组,与请求参数中的模型id 一一对应。数据结构如下:

[

    {

        "model":{

            "name": "model1",

            "metric_type": "atomic",

            "data_view_name": "xxx",

            "query_type": "promql",

            "formula": "xxxxxxxx" -- 计算公式

            "date_field": "field_name", -- 时间字段名称,非必输

            "date_format": "epoch_millis|year_month|......", -- 时间格式

            "metric_field": "yyy", -- 度量字段,非空

            "unit_type": "存储单位|时间单位|......", -- 单位类型

            "unit": "s|d|kb|mb|......", -- 度量单位

        },

        "datas": [

            {

                "labels": {

                    "<field_name>":"<field_value>",

                    ...

                },

                "date_values": [<t1>,<t2>],

                "values": [<v1>,<v2>]

            },

            ...

        ],

        "step": "1m",

        "is_variable": false

    },

    {

        "model":{

            "name": "model2",

            "metric_type": "atomic",

            "data_view_name": "xxx",

            "query_type": "promql",

            "formula": "xxxxxxxx" -- 计算公式

            "date_field": "field_name", -- 时间字段名称,非必输

            "date_format": "epoch_millis|year_month|......", -- 时间格式

            "metric_field": "yyy", -- 度量字段,非空

            "unit_type": "存储单位|时间单位|......", -- 单位类型

            "unit": "s|d|kb|mb|......", -- 度量单位

        },

        "datas": [

            {

                "labels": {

                    "<field_name>":"<field_value>",

                    ...

                },

                "date_values": [<t1>],

                "values": [<v1>]

            },

            ...

        ],

        "step": "",

        "is_variable": false

    }

]

返回的数据示例:

[

    {

        "model": {

            "name": "model1",

            "metric_type": "atomic",

            "data_view_name": "xxx",

            "query_type": "promql",

            "formula": "cpu_second_total{}",

            "date_field": "@timestamp",

            "date_format": "epoch_millis",

            "measure_field": "value",

            "unit_type": "timeUnit",

            "unit": "s"

        },

        "datas": [

            {

                "labels": {

                    "cpu": "1",

                    "instance": "10.4.68.120:9101"

                },

                "date_values": [

                    1669789800123,

                    1669789900123

                ],

                "values": [ 10,11]

            }

        ],

        "step": "1m",

        "is_variable": false

    },

    {

        "model": {

            "name": "model2",

            "metric_type": "atomic",

            "data_view_name": "xxx",

            "query_type": "promql",

            "formula": "disk{}",

            "date_field": "@timestamp",

            "date_format": "epoch_millis",

            "measure_field": "value",

            "unit_type": "timeUnit",

            "unit": "s"

        },

        "datas": [

            {

                "labels": {

                    "device": "1",

                    "instance": "10.4.68.120:9101"

                },

                "date_values": [1646360670123],

                "values": [10]

            }

        ],

        "step": "",

        "is_variable": false

    }

]