一、名词

  • 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()

  1. 说明

展示 object 数据的指标集合,该函数不需要参数

  1. 示例
  1. // (1)请求
  2. show_object_source()
  3. // (2)返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "measurements",
  10. "columns": [
  11. "name"
  12. ],
  13. "values": [
  14. [
  15. "Servers"
  16. ]
  17. ]
  18. }
  19. ],
  20. "cost": "",
  21. "raw_query": ""
  22. }
  23. ]
  24. }

show_object_class()

  1. 说明

展示 object 数据的指标集合,该函数不需要参数,

  1. 注意

将遗弃,使用 show_object_source() 代替

show_object_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fileds 列表

非命名参数 描述 类型 是否必填 默认值 示例
来源类型 对象来源类型 string HOST
  1. 示例
  1. // (1)请求
  2. show_object_field(Servers)
  3. // (2)返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "fields",
  10. "columns": [
  11. "fieldKey",
  12. "fieldType"
  13. ],
  14. "values": [
  15. [
  16. "__class",
  17. "keyword"
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

show_object_label(class=source_class, names=[“n1”, “n2”])

  1. 说明

展示对象包含的标签信息

参数 描述 类型 是否必填 默认值 示例
class 对象来源类型 string HOST
names 对象名称列表 []string ['aws', 'aliyun']
  1. 注意

(1) names 参数可选,如果不传,表示展示所有 class=source_class的标签

(2) 最多展示 1000 个对象的标签信息

  1. 示例
  1. // (1)请求
  2. show_object_label(class="host_processes", names=["ubuntu20-dev_49392"] )
  3. // (2)返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "tags": {
  10. "name": "ubuntu20-dev_49392"
  11. },
  12. "columns": [
  13. "__docid",
  14. "labels",
  15. "key",
  16. "value"
  17. ],
  18. "values": [
  19. [
  20. "375370265b0641818a99ed1a61aed8563a25459d",
  21. [
  22. "l1",
  23. "l2"
  24. ],
  25. "host",
  26. "ubuntu20-dev"
  27. ]
  28. ]
  29. }
  30. ],
  31. "cost": "1ms",
  32. "raw_query": ""
  33. }
  34. ]
  35. }

2.2 logging数据

show_logging_source()

  1. 说明

展示日志数据的指标集合,该函数不需要参数

  1. 示例

show_logging_source(), 返回结构同 show_object_source()

show_logging_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fileds 列表

  1. 示例

show_logging_field(nginx), 返回结构同 show_object_field(Servers)

2.3 keyevent

show_event_source()

  1. 说明

展示keyevent数据的指标集合,该函数不需要参数

  1. 示例

show_event_source(), 返回结构同 show_object_source()

show_event_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fields 列表

  1. 示例

show_event_field(datafluxTrigger), 返回结构同 show_object_field(Servers)

2.4 tracing数据

show_tracing_source()

  1. 说明

展示 tracing 数据的指标集合,该函数不需要参数

  1. 示例

show_tracing_source(), 返回结构同 show_object_source()

show_tracing_service()

  1. 说明

展示 tracing 数据的指标集合,该函数不需要参数

  1. 注意

将遗弃,使用 show_tracing_source() 代替

show_tracing_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fields 列表

  1. 示例

show_tracing_field(mysql), 返回结构同 show_object_field(Servers)

2.5 rum数据

show_rum_source()

  1. 说明

展示rum数据的指标集合,该函数不需要参数

  1. 示例

show_rum_source(), 返回结构同 show_object_source()

show_rum_type()

  1. 说明

展示rum数据的指标集合,该函数不需要参数

注意:

将遗弃,使用 show_rum_source() 代替

show_rum_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fields 列表

  1. 示例

show_rum_field(js_error), 返回结构同 show_object_field(Servers)

2.6 custom object数据

show_cobject_source()

  1. 说明

展示 custom object 数据的指标集合,该函数不需要参数

  1. 示例
  1. // (1)请求
  2. show_custom_object_source()
  3. // (2)返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "measurements",
  10. "columns": [
  11. "name"
  12. ],
  13. "values": [
  14. [
  15. "Servers"
  16. ]
  17. ]
  18. }
  19. ],
  20. "cost": "",
  21. "raw_query": ""
  22. }
  23. ]
  24. }

show_custom_object_class()

  1. 说明

展示 custom object 数据的指标集合,该函数不需要参数,

  1. 注意

将遗弃,使用 show_custom_object_source() 代替

show_custom_object_field(source_value)

  1. 说明

展示 source_value 指标下的所有 fileds 列表

  1. 示例
  1. // (1)请求
  2. show_cobject_field(Servers)
  3. // (2)返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "fields",
  10. "columns": [
  11. "fieldKey",
  12. "fieldType"
  13. ],
  14. "values": [
  15. [
  16. "__class",
  17. "keyword"
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

2.7 时序数据

show_measurement()

  1. 说明

展示时序数据的指标集合

  1. 示例

show_measurement(), 返回结构同 show_object_source()

show_tag_key()

  1. 说明

查看指标集 tag 列表, 可以指定具体的指标

  1. 示例
  1. // (1) 请求
  2. show_tag_key(from=['cpu'])
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "tagKey"
  12. ],
  13. "values": [
  14. [
  15. "cpu"
  16. ],
  17. [
  18. "host"
  19. ]
  20. ]
  21. }
  22. ],
  23. "cost": "",
  24. "raw_query": ""
  25. }
  26. ]
  27. }

show_tag_value()

  1. 说明

返回数据库中指定 tag key 的 tag value 列表

  1. 示例
  1. // (1) 请求
  2. show_tag_value(from=['cpu'], keyin=['host'])
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "key",
  12. "value"
  13. ],
  14. "values": [
  15. [
  16. "host",
  17. "jydubuntu"
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

show_field_key()

  1. 说明

查看指标集 field-key 列表

  1. 示例

show_field_key(from=[‘cpu’]), 返回结构同 show_object_field(Servers)

三、聚合函数列表

avg

  1. 说明

返回字段的平均值

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string host
  1. 场景

(1) avg(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

avg函数应用的字段需要是数值类型,

如果该字段 field1 值为 ‘10’ 字符串类型,可以使用 avg(int(field1))实现

如果该字段 field1 值为 ‘10.0’ 字符串类型,可以使用 avg(float(field1))实现

  1. 示例
  1. // (1) 请求
  2. L::nginx:(avg(connect_total)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "avg_connect_total"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. 50.16857454347234
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

bottom

  1. 说明

返回最小的 n 个 field 值

  1. 场景

(1) bottom(field1, n)

参数有且只有两个,

第一个参数表示字段名称,类型为字符串

第二个参数表示返回数量,类型为数值

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

field1不能是time字段,即bottom(time, 10)不支持,可以使用query实现

  1. 示例
  1. // (1) 请求
  2. L::nginx:(bottom(host, 2)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "host"
  13. ],
  14. "values": [
  15. [
  16. 1609154974839,
  17. "csoslinux"
  18. ],
  19. [
  20. 1609154959048,
  21. "csoslinux"
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

count

  1. 说明

返回非空字段值的汇总值

  1. 场景

(1) count(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

(2) count(func1())

参数可以是一个内置函数,例如: count(distinct(field1)), 适用范围是 M

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求
  2. L::nginx:(count(host)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "count_host"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. 36712
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

count_distinct

  1. 说明

统计字段不同值的数量

  1. 场景

(1) count_distinct(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求
  2. L::nginx:(count_distinct(host)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "count_distinct(host)"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. 3
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

derivative

  1. 说明

返回字段的相邻两个点的变化率

  1. 场景

(1) derivative(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 |
  1. 注意

field1对应值为数值类型

  1. 示例
  1. // (1) 请求
  2. M::cpu:(derivative(usage_idle)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "derivative"
  13. ],
  14. "values": [
  15. [
  16. 1608612970000,
  17. -0.06040241121018255
  18. ],
  19. [
  20. 1608612980000,
  21. 0.020079912763694096
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

difference

  1. 说明

差值

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 |
  1. 示例
  1. // (1) 请求
  2. M::cpu:(difference(usage_idle)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "difference"
  13. ],
  14. "values": [
  15. [
  16. 1608612970000,
  17. -0.6040241121018255
  18. ],
  19. [
  20. 1608612980000,
  21. 0.20079912763694097
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

distinct

  1. 说明

返回field value的不同值列表

  1. 场景

(1) distinct(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求
  2. R::js_error:(distinct(error_message))
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "js_error",
  10. "columns": [
  11. "time",
  12. "distinct_error_message"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. "sdfs is not defined"
  18. ],
  19. [
  20. null,
  21. "xxxxxxx console error:"
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

exists

  1. 说明

文档中,指定字段必须存在

  1. 场景

(1) field1=exists()

不需要参数

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求, 注意: exists函数位于filter-clause语句中
  2. rum::js_error:(sdk_name, error_message){sdk_name=exists()} limit 1
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "js_error",
  10. "columns": [
  11. "time",
  12. "sdk_name",
  13. "error_message"
  14. ],
  15. "values": [
  16. [
  17. 1609227006093,
  18. "小程序 SDK",
  19. "sdfs is not defined"
  20. ]
  21. ]
  22. }
  23. ],
  24. "cost": "",
  25. "raw_query": ""
  26. }
  27. ]
  28. }

first

  1. 说明

返回时间戳最早的值

  1. 场景

(1) first(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

field1不能是time字段,即first(time)无意义

  1. 示例
  1. // (1) 请求
  2. L::nginx:(first(host)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "host"
  13. ],
  14. "values": [
  15. [
  16. 1609837113498,
  17. "wangjiaoshou"
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

float

  1. 说明

cast 函数,将 string 类型数据转为 float 数值

  1. 场景

(1) avg(float(fieldName))

参数有且只有一个,参数值为字段名称, 该函数只能应用于sum, max, min, avg中,作为嵌套内层函数使用,即float(fieldName)目前不支持

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |

histogram

  1. 说明

直方图,范围聚合

  1. 场景

(1) histogram(fieldName, startValue, endValue, interval, minDoc)

必填参数,

a. fieldName x轴对应的字段名称

b. startValue x轴最小值边界

c. endValue x轴最大值边界

d. interval 间隔范围

缺省参数,

e. minDoc 表示低于minDoc的值不返回

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求
  2. E::`monitor`:(histogram(date_range, 300, 6060, 100, 1))
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "monitor",
  10. "columns": [
  11. "time", // 字段名称为time,但是实际表示y轴的数值
  12. "histogram(date_range, 300, 6060, 100, 1)"
  13. ],
  14. "values": [
  15. [
  16. 300,
  17. 11183
  18. ],
  19. [
  20. 600,
  21. 93
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": "",
  28. "total_hits": 10000,
  29. "group_by": null
  30. }
  31. ]
  32. }

int

  1. 说明

cast 函数,将 string 类型数据转为 int 数值

  1. 场景

(1) avg(int(fieldName))

参数有且只有一个,参数值为字段名称, 该函数只能应用于sum, max, min, avg中,作为嵌套内层函数使用,即int(fieldName)目前不支持

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |

last

  1. 说明

返回时间戳最近的值

  1. 场景

(1) last(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

注意: field1不能是time字段,即last(time)无意义

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例

L::nginx:(last(host)) {__errorCode='200'}, 返回结构同 first 函数

log

  1. 说明

求对数

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 |
  1. 示例
  1. // (1) 请求
  2. M::cpu:(log(usage_idle, 10)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "log"
  13. ],
  14. "values": [
  15. [
  16. 1608612960000,
  17. 1.9982417203437028
  18. ],
  19. [
  20. 1608612970000,
  21. 1.995599815632755
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": " ",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

max

  1. 说明

返回最大的字段值

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string host
  1. 场景

(1) max(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

第1个参数为字段名称,该字段值需要是数值

  1. 示例
  1. // (1) 请求
  2. L::nginx:(max(connect_total)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "max_connect_total"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. 99
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

min

  1. 说明

返回最小的字段值

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string host
  1. 场景

(1) min(field1)

参数有且只有一个,参数类型是字符串,参数值为字段名称

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

第1个参数为字段名称,该字段值需要是数值

  1. 示例

L::nginx:(min(connect_total)) {__errorCode='200'}, 返回结构同 max 函数

moving_average

  1. 说明

平均移动

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 |
  1. 示例
  1. // (1) 请求
  2. M::cpu:(moving_average(usage_idle, 2)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "moving_average"
  13. ],
  14. "values": [
  15. [
  16. 1608612970000,
  17. 99.29394753991822
  18. ],
  19. [
  20. 1608612980000,
  21. 99.09233504768578
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

non_negative_derivative

  1. 说明

数据的非负变化率

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 |
  1. 示例
  1. // (1) 请求
  2. M::cpu:(non_negative_derivative(usage_idle)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "non_negative_derivative"
  13. ],
  14. "values": [
  15. [
  16. 1608612980000,
  17. 0.020079912763694096
  18. ],
  19. [
  20. 1608613000000,
  21. 0.010417976581746303
  22. ]
  23. ]
  24. }
  25. ],
  26. "cost": "",
  27. "raw_query": ""
  28. }
  29. ]
  30. }

percentile

  1. 说明

返回较大百分之 n 的字段值

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string usage_idle
百分位 返回百分位数值 int 90
  1. 场景

M::cpu:(percentile(usage_idle, 5))

获取某个数值的百分位统计信息

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

(1) 第1个参数表示字段名称,该字段值需要是数值

(2) 第2个参数表示百分位,参数值范围是(0, 100)

  1. 示例
  1. // (1) 请求
  2. M::cpu:(percentile(usage_idle, 5)) limit 2
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "cpu",
  10. "columns": [
  11. "time",
  12. "percentile"
  13. ],
  14. "values": [
  15. [
  16. 1609133610000,
  17. 97.75280898882501
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

sum

  1. 说明

返回字段值的和

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string host
  1. 场景

(1) sum(field1)

参数有且只有一个

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求
  2. L::nginx:(sum(connect_total)) {__errorCode='200'}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "nginx",
  10. "columns": [
  11. "time",
  12. "sum_connect_total"
  13. ],
  14. "values": [
  15. [
  16. null,
  17. 1844867
  18. ]
  19. ]
  20. }
  21. ],
  22. "cost": "",
  23. "raw_query": ""
  24. }
  25. ]
  26. }

top

  1. 说明

返回最大的 n 个 field 值

非命名参数 描述 类型 是否必填 默认值 示例
字段名称 字段名称 string host
返回数量 返回的结果数量 int 3
  1. 场景

(1) top(field1, n)

参数有且只有两个

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

field1不能是time字段,即top(time, 10)不支持,可以使用query实现

  1. 示例

L::nginx:(top(host, 2)) {__errorCode='200'}, 返回结构同 bottom 函数

四、查询函数列表

match

  1. 说明

全文搜索(模糊搜索)

非命名参数 描述 类型 是否必填 默认值 示例
字段值 查询的字段值 void host1
  1. 场景

(1) field1=match(field1_value)

参数有且只有一个, 表示查询的字段值

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 示例
  1. // (1) 请求, 注意: match函数位于filter-clause语句中
  2. rum::js_error:(sdk_name, error_message){error_message=match('not defined')} limit 1
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "js_error",
  10. "columns": [
  11. "time",
  12. "sdk_name",
  13. "error_message"
  14. ],
  15. "values": [
  16. [
  17. 1609227006093,
  18. "小程序 SDK",
  19. "sdfs is not defined"
  20. ]
  21. ]
  22. }
  23. ],
  24. "cost": "",
  25. "raw_query": ""
  26. }
  27. ]
  28. }

re

  1. 说明

查询时候,正则过滤

非命名参数 描述 类型 是否必填 默认值 示例
字段值 查询的字段值 void host1
  1. 场景

(1) field1=re(field1_value)

参数有且只有一个, 表示查询的字段值

  1. 适用 | 类型 | 描述 | | —- | —- | | M, metric | 时序指标数据 | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

正则查询性能非常低,不建议使用

时序指标数据的正则语法参考了:

golang regular expression

非时序指标数据的正则语法参考了:

es regexp query

  1. 示例
  1. // (1) 请求, 注意: re函数位于filter-clause语句中
  2. rum::js_error:(sdk_name, error_message){error_message=re('.*not defined.*')} limit 1
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "js_error",
  10. "columns": [
  11. "time",
  12. "sdk_name",
  13. "error_message"
  14. ],
  15. "values": [
  16. [
  17. 1609227006093,
  18. "小程序 SDK",
  19. "sdfs is not defined"
  20. ]
  21. ]
  22. }
  23. ],
  24. "cost": "",
  25. "raw_query": ""
  26. }
  27. ]
  28. }

queryString

  1. 说明

字符串查询,

dql将使用特殊语法解析器,解析输入的字符串,查询文档

非命名参数 描述 类型 是否必填 默认值 示例
查询条件 查询输入字符串 string info OR warnning
  1. 场景

(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个任意字符

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

建议一般搜索场景使用,

queryString查询参考了:

elasticsearch queryString

  1. 示例
  1. // (1) 请求
  2. L::datakit:(host,message) {message=queryString('/[telegraf|GIN]/ OR /[rum|GIN]/')} limit 1
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "datakit",
  10. "columns": [
  11. "time",
  12. "host",
  13. "message"
  14. ],
  15. "values": [
  16. [
  17. 1616412168015,
  18. "aaffb5b0ce0b",
  19. ""
  20. ]
  21. ]
  22. }
  23. ],
  24. "cost": "26ms",
  25. "raw_query": "",
  26. "total_hits": 12644,
  27. "group_by": null
  28. }
  29. ]
  30. }

wildcard

  1. 说明

通配查询

通配字符 *表示匹配 0 或多个任意字符,? 表示匹配1个任意字符

  1. 场景

通配查询

field1=wildcard(field1_value)

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 | | E, event | 事件数据 | | L, logging | 日志数据 | | BL, backup_logging | 备份日志数据 | | T, tracing | 追踪数据 | | R, rum | RUM数据 | | S, security | 安全检测数据 |
  1. 注意

通配查询性能较低,会查询消耗更多的资源,慎用,

通配查询参考了:

elasticsearch wildcard query

  1. 示例
  1. // (1) 请求
  2. L::datakit:(host,message) {message=wildcard('*write*')} limit 1
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "datakit",
  10. "columns": [
  11. "time",
  12. "host",
  13. "message"
  14. ],
  15. "values": [
  16. [
  17. 1616412168015,
  18. "aaffb5b0ce0b",
  19. ""
  20. ]
  21. ]
  22. }
  23. ],
  24. "cost": "26ms",
  25. "raw_query": "",
  26. "total_hits": 12644,
  27. "group_by": null
  28. }
  29. ]
  30. }

with_labels

  1. 说明

通过对象标签,查询对象信息

参数说明:

参数 描述 类型 是否必填 默认值 示例
object_class 对象来源类型 string HOST
labels 对象标签列表 []string ['aws', 'aliyun']
object_name 对象名称 string ubuntu20-dev
key 根据标签,查询出来的字段名称 string name name
max 根据标签查询出来的最多对象数量,当前支持最大值为1000 int 1000 10
  1. 场景

通过标签查询对象:

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) }

  1. 适用 | 类型 | 描述 | | —- | —- | | O, object | 对象数据 | | CO, custom_object | 自定义对象数据 |
  1. 注意

(1)通过标签, 获取到的对象数量最多为1000, 如果想获取到更多的对象,可以缩小查询时间范围或者添加更多的查询条件
(2)labels参数是字符串列表,多个label之间的关系是逻辑与,即 labels=['l1', 'l2']表示查询对象包含标签 'l1' 和 'l2'

  1. 示例
  1. // (1) 请求
  2. object::docker_containers:() {name=with_labels(object_class='docker_containers', labels=['klgalga'])}
  3. // (2) 返回
  4. {
  5. "content": [
  6. {
  7. "series": [
  8. {
  9. "name": "docker_containers",
  10. "columns": [
  11. "block_write_byte",
  12. "class",
  13. "pod_name",
  14. "__docid",
  15. "image_short_name",
  16. "image_tag",
  17. "state",
  18. "cpu_system_delta",
  19. "name",
  20. "image_name",
  21. "cpu_usage",
  22. "create_time",
  23. "from_kubernetes",
  24. "host",
  25. "mem_failed_count",
  26. "block_read_byte",
  27. "cpu_numbers",
  28. "mem_limit",
  29. "network_bytes_rcvd",
  30. "process",
  31. "container_name",
  32. "container_type",
  33. "mem_used_percent",
  34. "network_bytes_sent",
  35. "container_id",
  36. "time",
  37. "cpu_delta",
  38. "docker_image",
  39. "mem_usage",
  40. "message",
  41. "pod_namespace",
  42. "status",
  43. "age",
  44. "df_label"
  45. ],
  46. "values": [
  47. [
  48. 0,
  49. "docker_containers",
  50. "coredns-66db54ff7f-lgw48",
  51. "O_10f9f174f98ff1b8a6543819aeeab811",
  52. "sha256",
  53. "67da37a9a360e600e74464da48437257b00a754c77c40f60c65e4cb327c34bd5",
  54. "running",
  55. 4980000000,
  56. "16fa0160ca432c11b74b784f13d2a92005ddd0d97b3bb9a2dadf34156e0d0986",
  57. "sha256",
  58. 0.115964,
  59. 1626862244282,
  60. true,
  61. "izbp152ke14timzud0du15z",
  62. 0,
  63. 7496810496,
  64. 4,
  65. 178257920,
  66. 0,
  67. "[{\"C\":\"0\",\"CMD\":\"/coredns -conf /etc/coredns/Corefile\",\"PID\":\"23543\",\"PPID\":\"23510\",\"STIME\":\"Jun16\",\"TIME\":\"01:55:30\",\"TTY\":\"?\",\"UID\":\"root\"}]",
  68. "k8s_coredns_coredns-66db54ff7f-lgw48_kube-system_6342828e-cc7d-4ef5-95b9-9503ee860da1_0",
  69. "kubernetes",
  70. 7.295496,
  71. 0,
  72. "16fa0160ca432c11b74b784f13d2a92005ddd0d97b3bb9a2dadf34156e0d0986",
  73. 1627438611536,
  74. 1443756,
  75. "sha256:67da37a9a360e600e74464da48437257b00a754c77c40f60c65e4cb327c34bd5",
  76. 13004800,
  77. "{}",
  78. "kube-system",
  79. "Up 5 weeks",
  80. 3603246,
  81. [
  82. "klgjg",
  83. "klgalga",
  84. "gaga"
  85. ]
  86. ]
  87. ]
  88. }
  89. ],
  90. "cost": "2ms",
  91. "raw_query": "",
  92. "total_hits": 1
  93. }
  94. ]
  95. }