一、名词
M
- 指时序数据中的指标集L
- 日志数据,以字段source
作为逻辑意义上的分类BL
- 备份日志数据,以字段source
作为逻辑意义上的分类O
- 对象数据,以字段class
作为逻辑意义上的分类CO
- 自定义对象数据,以字段class
作为逻辑意义上的分类E
- 事件数据,以字段source
作为逻辑意义上的分类T
- 追踪数据,以字段service
作为逻辑意义上的分类R
- RUM 数据,以字段source
作为逻辑意义上的分类S
- security数据,以字段category
作为逻辑意义上的分类
二、show 函数列表
2.1 object数据
show_object_source()
- 说明
展示 object
数据的指标集合,该函数不需要参数
- 示例
// (1)请求
show_object_source()
// (2)返回
{
"content": [
{
"series": [
{
"name": "measurements",
"columns": [
"name"
],
"values": [
[
"Servers"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
show_object_class()
- 说明
展示 object 数据的指标集合,该函数不需要参数,
- 注意
将遗弃,使用 show_object_source() 代替
show_object_field(source_value
)
- 说明
展示 source_value
指标下的所有 fileds
列表
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
来源类型 | 对象来源类型 | string |
否 | HOST |
- 示例
// (1)请求
show_object_field(Servers)
// (2)返回
{
"content": [
{
"series": [
{
"name": "fields",
"columns": [
"fieldKey",
"fieldType"
],
"values": [
[
"__class",
"keyword"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
show_object_label(class=source_class
, names=[“n1”, “n2”])
- 说明
展示对象包含的标签信息
参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
class |
对象来源类型 | string |
是 | HOST |
|
names |
对象名称列表 | []string |
否 | ['aws', 'aliyun'] |
- 注意
(1) names
参数可选,如果不传,表示展示所有 class=source_class
的标签
(2) 最多展示 1000 个对象的标签信息
- 示例
// (1)请求
show_object_label(class="host_processes", names=["ubuntu20-dev_49392"] )
// (2)返回
{
"content": [
{
"series": [
{
"tags": {
"name": "ubuntu20-dev_49392"
},
"columns": [
"__docid",
"labels",
"key",
"value"
],
"values": [
[
"375370265b0641818a99ed1a61aed8563a25459d",
[
"l1",
"l2"
],
"host",
"ubuntu20-dev"
]
]
}
],
"cost": "1ms",
"raw_query": ""
}
]
}
2.2 logging数据
show_logging_source()
- 说明
展示日志数据的指标集合,该函数不需要参数
- 示例
show_logging_source(), 返回结构同 show_object_source()
show_logging_field(source_value
)
- 说明
展示 source_value 指标下的所有 fileds 列表
- 示例
show_logging_field(nginx), 返回结构同 show_object_field(Servers)
2.3 keyevent
show_event_source()
- 说明
展示keyevent数据的指标集合,该函数不需要参数
- 示例
show_event_source(), 返回结构同 show_object_source()
show_event_field(source_value
)
- 说明
展示 source_value 指标下的所有 fields 列表
- 示例
show_event_field(datafluxTrigger), 返回结构同 show_object_field(Servers)
2.4 tracing数据
show_tracing_source()
- 说明
展示 tracing 数据的指标集合,该函数不需要参数
- 示例
show_tracing_source(), 返回结构同 show_object_source()
show_tracing_service()
- 说明
展示 tracing 数据的指标集合,该函数不需要参数
- 注意
将遗弃,使用 show_tracing_source() 代替
show_tracing_field(source_value
)
- 说明
展示 source_value 指标下的所有 fields 列表
- 示例
show_tracing_field(mysql), 返回结构同 show_object_field(Servers)
2.5 rum数据
show_rum_source()
- 说明
展示rum数据的指标集合,该函数不需要参数
- 示例
show_rum_source(), 返回结构同 show_object_source()
show_rum_type()
- 说明
展示rum数据的指标集合,该函数不需要参数
注意:
将遗弃,使用 show_rum_source() 代替
show_rum_field(source_value
)
- 说明
展示 source_value 指标下的所有 fields 列表
- 示例
show_rum_field(js_error), 返回结构同 show_object_field(Servers)
2.6 custom object数据
show_cobject_source()
- 说明
展示 custom object 数据的指标集合,该函数不需要参数
- 示例
// (1)请求
show_custom_object_source()
// (2)返回
{
"content": [
{
"series": [
{
"name": "measurements",
"columns": [
"name"
],
"values": [
[
"Servers"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
show_custom_object_class()
- 说明
展示 custom object 数据的指标集合,该函数不需要参数,
- 注意
将遗弃,使用 show_custom_object_source() 代替
show_custom_object_field(source_value
)
- 说明
展示 source_value 指标下的所有 fileds 列表
- 示例
// (1)请求
show_cobject_field(Servers)
// (2)返回
{
"content": [
{
"series": [
{
"name": "fields",
"columns": [
"fieldKey",
"fieldType"
],
"values": [
[
"__class",
"keyword"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
2.7 时序数据
show_measurement()
- 说明
展示时序数据的指标集合
- 示例
show_measurement(), 返回结构同 show_object_source()
show_tag_key()
- 说明
查看指标集 tag 列表, 可以指定具体的指标
- 示例
// (1) 请求
show_tag_key(from=['cpu'])
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"tagKey"
],
"values": [
[
"cpu"
],
[
"host"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
show_tag_value()
- 说明
返回数据库中指定 tag key 的 tag value 列表
- 示例
// (1) 请求
show_tag_value(from=['cpu'], keyin=['host'])
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"key",
"value"
],
"values": [
[
"host",
"jydubuntu"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
show_field_key()
- 说明
查看指标集 field-key 列表
- 示例
show_field_key(from=[‘cpu’]), 返回结构同 show_object_field(Servers)
三、聚合函数列表
avg
- 说明
返回字段的平均值
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | host |
- 场景
(1) avg(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
avg函数应用的字段需要是数值类型,
如果该字段 field1 值为 ‘10’ 字符串类型,可以使用 avg(int(field1))实现
如果该字段 field1 值为 ‘10.0’ 字符串类型,可以使用 avg(float(field1))实现
- 示例
// (1) 请求
L::nginx:(avg(connect_total)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"avg_connect_total"
],
"values": [
[
null,
50.16857454347234
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
bottom
- 说明
返回最小的 n 个 field 值
- 场景
(1) bottom(field1, n)
参数有且只有两个,
第一个参数表示字段名称,类型为字符串
第二个参数表示返回数量,类型为数值
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
field1不能是time字段,即bottom(time, 10)不支持,可以使用query实现
- 示例
// (1) 请求
L::nginx:(bottom(host, 2)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"host"
],
"values": [
[
1609154974839,
"csoslinux"
],
[
1609154959048,
"csoslinux"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
count
- 说明
返回非空字段值的汇总值
- 场景
(1) count(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
(2) count(func1())
参数可以是一个内置函数,例如: count(distinct(field1))
, 适用范围是 M
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求
L::nginx:(count(host)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"count_host"
],
"values": [
[
null,
36712
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
count_distinct
- 说明
统计字段不同值的数量
- 场景
(1) count_distinct(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求
L::nginx:(count_distinct(host)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"count_distinct(host)"
],
"values": [
[
null,
3
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
derivative
- 说明
返回字段的相邻两个点的变化率
- 场景
(1) derivative(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 |
- 注意
field1
对应值为数值类型
- 示例
// (1) 请求
M::cpu:(derivative(usage_idle)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"derivative"
],
"values": [
[
1608612970000,
-0.06040241121018255
],
[
1608612980000,
0.020079912763694096
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
difference
- 说明
差值
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 |
- 示例
// (1) 请求
M::cpu:(difference(usage_idle)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"difference"
],
"values": [
[
1608612970000,
-0.6040241121018255
],
[
1608612980000,
0.20079912763694097
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
distinct
- 说明
返回field value
的不同值列表
- 场景
(1) distinct(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求
R::js_error:(distinct(error_message))
// (2) 返回
{
"content": [
{
"series": [
{
"name": "js_error",
"columns": [
"time",
"distinct_error_message"
],
"values": [
[
null,
"sdfs is not defined"
],
[
null,
"xxxxxxx console error:"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
exists
- 说明
文档中,指定字段必须存在
- 场景
(1) field1=exists()
不需要参数
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求, 注意: exists函数位于filter-clause语句中
rum::js_error:(sdk_name, error_message){sdk_name=exists()} limit 1
// (2) 返回
{
"content": [
{
"series": [
{
"name": "js_error",
"columns": [
"time",
"sdk_name",
"error_message"
],
"values": [
[
1609227006093,
"小程序 SDK",
"sdfs is not defined"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
first
- 说明
返回时间戳最早的值
- 场景
(1) first(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
field1不能是time字段,即first(time)无意义
- 示例
// (1) 请求
L::nginx:(first(host)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"host"
],
"values": [
[
1609837113498,
"wangjiaoshou"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
float
- 说明
cast 函数,将 string 类型数据转为 float 数值
- 场景
(1) avg(float(fieldName))
参数有且只有一个,参数值为字段名称, 该函数只能应用于sum
, max
, min
, avg
中,作为嵌套内层函数使用,即float(fieldName)
目前不支持
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
histogram
- 说明
直方图,范围聚合
- 场景
(1) histogram(fieldName, startValue, endValue, interval, minDoc)
必填参数,
a. fieldName
x轴对应的字段名称
b. startValue
x轴最小值边界
c. endValue
x轴最大值边界
d. interval
间隔范围
缺省参数,
e. minDoc
表示低于minDoc
的值不返回
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求
E::`monitor`:(histogram(date_range, 300, 6060, 100, 1))
// (2) 返回
{
"content": [
{
"series": [
{
"name": "monitor",
"columns": [
"time", // 字段名称为time,但是实际表示y轴的数值
"histogram(date_range, 300, 6060, 100, 1)"
],
"values": [
[
300,
11183
],
[
600,
93
]
]
}
],
"cost": "",
"raw_query": "",
"total_hits": 10000,
"group_by": null
}
]
}
int
- 说明
cast 函数,将 string 类型数据转为 int 数值
- 场景
(1) avg(int(fieldName))
参数有且只有一个,参数值为字段名称, 该函数只能应用于sum
, max
, min
, avg
中,作为嵌套内层函数使用,即int(fieldName)
目前不支持
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
last
- 说明
返回时间戳最近的值
- 场景
(1) last(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
注意: field1不能是time字段,即last(time)无意义
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
L::nginx:(last(host)) {__errorCode='200'}
, 返回结构同 first
函数
log
- 说明
求对数
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 |
- 示例
// (1) 请求
M::cpu:(log(usage_idle, 10)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"log"
],
"values": [
[
1608612960000,
1.9982417203437028
],
[
1608612970000,
1.995599815632755
]
]
}
],
"cost": " ",
"raw_query": ""
}
]
}
max
- 说明
返回最大的字段值
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | host |
- 场景
(1) max(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
第1个参数为字段名称,该字段值需要是数值
- 示例
// (1) 请求
L::nginx:(max(connect_total)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"max_connect_total"
],
"values": [
[
null,
99
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
min
- 说明
返回最小的字段值
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | host |
- 场景
(1) min(field1)
参数有且只有一个,参数类型是字符串,参数值为字段名称
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
第1个参数为字段名称,该字段值需要是数值
- 示例
L::nginx:(min(connect_total)) {__errorCode='200'}
, 返回结构同 max
函数
moving_average
- 说明
平均移动
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 |
- 示例
// (1) 请求
M::cpu:(moving_average(usage_idle, 2)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"moving_average"
],
"values": [
[
1608612970000,
99.29394753991822
],
[
1608612980000,
99.09233504768578
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
non_negative_derivative
- 说明
数据的非负变化率
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 |
- 示例
// (1) 请求
M::cpu:(non_negative_derivative(usage_idle)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"non_negative_derivative"
],
"values": [
[
1608612980000,
0.020079912763694096
],
[
1608613000000,
0.010417976581746303
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
percentile
- 说明
返回较大百分之 n 的字段值
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | usage_idle |
|
百分位 | 返回百分位数值 | int |
是 | 90 |
- 场景
M::cpu:(percentile(usage_idle, 5))
获取某个数值的百分位统计信息
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
(1) 第1个参数表示字段名称,该字段值需要是数值
(2) 第2个参数表示百分位,参数值范围是(0, 100)
- 示例
// (1) 请求
M::cpu:(percentile(usage_idle, 5)) limit 2
// (2) 返回
{
"content": [
{
"series": [
{
"name": "cpu",
"columns": [
"time",
"percentile"
],
"values": [
[
1609133610000,
97.75280898882501
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
sum
- 说明
返回字段值的和
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | host |
- 场景
(1) sum(field1)
参数有且只有一个
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求
L::nginx:(sum(connect_total)) {__errorCode='200'}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "nginx",
"columns": [
"time",
"sum_connect_total"
],
"values": [
[
null,
1844867
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
top
- 说明
返回最大的 n 个 field 值
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段名称 | 字段名称 | string |
是 | host |
|
返回数量 | 返回的结果数量 | int |
是 | 3 |
- 场景
(1) top(field1, n)
参数有且只有两个
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
field1
不能是time
字段,即top(time, 10)
不支持,可以使用query
实现
- 示例
L::nginx:(top(host, 2)) {__errorCode='200'}
, 返回结构同 bottom
函数
四、查询函数列表
match
- 说明
全文搜索(模糊搜索)
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段值 | 查询的字段值 | void |
是 | host1 |
- 场景
(1) field1=match(field1_value)
参数有且只有一个, 表示查询的字段值
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 示例
// (1) 请求, 注意: match函数位于filter-clause语句中
rum::js_error:(sdk_name, error_message){error_message=match('not defined')} limit 1
// (2) 返回
{
"content": [
{
"series": [
{
"name": "js_error",
"columns": [
"time",
"sdk_name",
"error_message"
],
"values": [
[
1609227006093,
"小程序 SDK",
"sdfs is not defined"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
re
- 说明
查询时候,正则过滤
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
字段值 | 查询的字段值 | void |
是 | host1 |
- 场景
(1) field1=re(field1_value)
参数有且只有一个, 表示查询的字段值
- 适用
| 类型 | 描述 |
| —- | —- |
|
M, metric
| 时序指标数据 | |O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
正则查询性能非常低,不建议使用
时序指标数据的正则语法参考了:
非时序指标数据的正则语法参考了:
- 示例
// (1) 请求, 注意: re函数位于filter-clause语句中
rum::js_error:(sdk_name, error_message){error_message=re('.*not defined.*')} limit 1
// (2) 返回
{
"content": [
{
"series": [
{
"name": "js_error",
"columns": [
"time",
"sdk_name",
"error_message"
],
"values": [
[
1609227006093,
"小程序 SDK",
"sdfs is not defined"
]
]
}
],
"cost": "",
"raw_query": ""
}
]
}
queryString
- 说明
字符串查询,
dql将使用特殊语法解析器,解析输入的字符串,查询文档
非命名参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
查询条件 | 查询输入字符串 | string |
是 | info OR warnning |
- 场景
(1) 普通的全文查询
field1=queryString(field1_value)
参数有且只有一个, 表示查询的字段值, 类似于上面的函数 match
(2) 查询条件逻辑组合
status=queryString("info OR warnning")
逻辑操作符为(需要使用大写字符串):
a. OR
b. AND
, 默认值
默认的逻辑操作符为 OR
, 查询字符串中 空格, 逗号都表示逻辑与关系
(3) 通配查询
message=queryString("error*")
message=queryString("error?")
通配字符 *
表示匹配 0 或多个任意字符,?
表示匹配1个任意字符
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
建议一般搜索场景使用,
queryString
查询参考了:
- 示例
// (1) 请求
L::datakit:(host,message) {message=queryString('/[telegraf|GIN]/ OR /[rum|GIN]/')} limit 1
// (2) 返回
{
"content": [
{
"series": [
{
"name": "datakit",
"columns": [
"time",
"host",
"message"
],
"values": [
[
1616412168015,
"aaffb5b0ce0b",
""
]
]
}
],
"cost": "26ms",
"raw_query": "",
"total_hits": 12644,
"group_by": null
}
]
}
wildcard
- 说明
通配查询
通配字符 *
表示匹配 0 或多个任意字符,?
表示匹配1个任意字符
- 场景
通配查询
field1=wildcard(field1_value)
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 | |E, event
| 事件数据 | |L, logging
| 日志数据 | |BL, backup_logging
| 备份日志数据 | |T, tracing
| 追踪数据 | |R, rum
| RUM数据 | |S, security
| 安全检测数据 |
- 注意
通配查询性能较低,会查询消耗更多的资源,慎用,
通配查询参考了:
- 示例
// (1) 请求
L::datakit:(host,message) {message=wildcard('*write*')} limit 1
// (2) 返回
{
"content": [
{
"series": [
{
"name": "datakit",
"columns": [
"time",
"host",
"message"
],
"values": [
[
1616412168015,
"aaffb5b0ce0b",
""
]
]
}
],
"cost": "26ms",
"raw_query": "",
"total_hits": 12644,
"group_by": null
}
]
}
with_labels
- 说明
通过对象标签,查询对象信息
参数说明:
参数 | 描述 | 类型 | 是否必填 | 默认值 | 示例 |
---|---|---|---|---|---|
object_class |
对象来源类型 | string |
是 | HOST |
|
labels |
对象标签列表 | []string |
是 | ['aws', 'aliyun'] |
|
object_name |
对象名称 | string |
否 | ubuntu20-dev |
|
key |
根据标签,查询出来的字段名称 | string |
否 | name |
name |
max |
根据标签查询出来的最多对象数量,当前支持最大值为1000 |
int |
否 | 1000 |
10 |
- 场景
通过标签查询对象:
object::HOST:() {name=with_labels(object_class='HOST', labels=['aws'])}
通过标签查询对象,然后关联到时序指标:
M::cpu(user_total){host=with_labels(object_class="HOST", labels=["aws"], key="name", max=10) }
- 适用
| 类型 | 描述 |
| —- | —- |
|
O, object
| 对象数据 | |CO, custom_object
| 自定义对象数据 |
- 注意
(1)通过标签, 获取到的对象数量最多为1000
, 如果想获取到更多的对象,可以缩小查询时间范围或者添加更多的查询条件
(2)labels
参数是字符串列表,多个label
之间的关系是逻辑与,即 labels=['l1', 'l2']
表示查询对象包含标签 'l1' 和 'l2'
- 示例
// (1) 请求
object::docker_containers:() {name=with_labels(object_class='docker_containers', labels=['klgalga'])}
// (2) 返回
{
"content": [
{
"series": [
{
"name": "docker_containers",
"columns": [
"block_write_byte",
"class",
"pod_name",
"__docid",
"image_short_name",
"image_tag",
"state",
"cpu_system_delta",
"name",
"image_name",
"cpu_usage",
"create_time",
"from_kubernetes",
"host",
"mem_failed_count",
"block_read_byte",
"cpu_numbers",
"mem_limit",
"network_bytes_rcvd",
"process",
"container_name",
"container_type",
"mem_used_percent",
"network_bytes_sent",
"container_id",
"time",
"cpu_delta",
"docker_image",
"mem_usage",
"message",
"pod_namespace",
"status",
"age",
"df_label"
],
"values": [
[
0,
"docker_containers",
"coredns-66db54ff7f-lgw48",
"O_10f9f174f98ff1b8a6543819aeeab811",
"sha256",
"67da37a9a360e600e74464da48437257b00a754c77c40f60c65e4cb327c34bd5",
"running",
4980000000,
"16fa0160ca432c11b74b784f13d2a92005ddd0d97b3bb9a2dadf34156e0d0986",
"sha256",
0.115964,
1626862244282,
true,
"izbp152ke14timzud0du15z",
0,
7496810496,
4,
178257920,
0,
"[{\"C\":\"0\",\"CMD\":\"/coredns -conf /etc/coredns/Corefile\",\"PID\":\"23543\",\"PPID\":\"23510\",\"STIME\":\"Jun16\",\"TIME\":\"01:55:30\",\"TTY\":\"?\",\"UID\":\"root\"}]",
"k8s_coredns_coredns-66db54ff7f-lgw48_kube-system_6342828e-cc7d-4ef5-95b9-9503ee860da1_0",
"kubernetes",
7.295496,
0,
"16fa0160ca432c11b74b784f13d2a92005ddd0d97b3bb9a2dadf34156e0d0986",
1627438611536,
1443756,
"sha256:67da37a9a360e600e74464da48437257b00a754c77c40f60c65e4cb327c34bd5",
13004800,
"{}",
"kube-system",
"Up 5 weeks",
3603246,
[
"klgjg",
"klgalga",
"gaga"
]
]
]
}
],
"cost": "2ms",
"raw_query": "",
"total_hits": 1
}
]
}