本文包括如下内容:
AnyRobot指标模型查询接口参考文档:
文件内网获取地址:UniQuery API 文档
AnyShare归档地址示例:AnyShare://产品和服务资料(AISHU Documentation Center)/04.AnyRobot Family/AnyRobot Family 5/01-产品发布/各版本子文件夹/16-API参考手册/AnyRobot Family 5 UniQuery API 参考手册
1) 接口地址
https://{host}:{port}/api/data-model/v1/metric-models?name=backup_task_latest_timepoint
字段 | 类型 | 含义 |
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" | 排序结果方向,可选asc、desc。 默认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
}
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,总条数 |
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": "="
}
]
}
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 时,可选,默认是5min。look_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
}
Model | object (MetricModel) 指标模型信息 | |
Name | string,指标模型名称 | |
metric_type | String,Enum: "atomic" "complex" 指标类型 | |
data_view_name | String,数据视图名称 | |
query_type | String,Value: "promql"。查询语言 | |
Formula | String,计算公式 | |
date_field | String,时间字段。当查询语言是 promql 时,此字段值为 @timestamp。 | |
date_format | string Value: "epoch_millis",时间格式。当查询语言是 promql 时,此字段值为 epoch_millis。 | |
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",度量单位 | |
measure_field | String,度量字段。当查询语言是 promql 时,此字段值为 value。 | |
Datas | Array of objects (MetricData) 指标数据 | |
Labels | Map,普通维度 label 的 map,key 为字段名,value 为字段值,键值的类型都是 string | |
date_values | Array of objects,时间值数组。为字符串或者数值类型 | |
Values | Array of numbers,度量值数组。数值类型 | |
step | String,范围查询时当前指标模型计算公式执行的步长。主要是为了兼容dsl中的日期直方图的 fixed_interval 是常量时,前端仪表盘画图使用。当查询语言是 promql 时,该值为请求的 step;当查询语言是 dsl 且日期直方图中使用了变量时,该值为请求的 step;当查询语言是 dsl 且日期直方图中使用了常量,该值为日期直方图中的常量。 |
|
is_variable | String,dsl 原子指标的指标模型中的计算公式是否使用了变量。默认是 false |
批量查询是对单个查询的接口进行了扩展,扩展的方案如下:
• /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
}
]