You need to enable JavaScript to run this app.
导航

检索语法

最近更新时间2024.01.30 10:05:14

首次发布时间2024.01.22 17:18:37

本文介绍日志服务检索功能支持的检索语法。

注意

日志服务产品架构升级,支持更丰富的检索分析功能。

  • 如果控制台提示新一代架构正式发布信息,表示您使用的是 2.0 架构,可参考本文档使用相关功能。
  • 如果控制台未提示新一代架构正式发布信息,表示您使用的是 1.0 架构,可参考检索分析(1.0 架构)中的检索概述等文档使用相关功能。

关于 1.0 架构与 2.0 架构的具体说明,请参考日志服务架构升级通知

限制说明

  • 语法操作符不区分大小写,例如 ANDand 均表示检索逻辑运算符。
  • 逻辑操作(AND,OR,&&,等)必须使用半角括号(())明确逻辑操作优先级,否则搜索到的结果可能和预期不一致。例如搜索某台机器上 log 目录下不包含 error 的日志,可指定检索条件为 ((__source__:192.168.10.10 AND __path__:\/var\/log\/*) NOT error)
  • 多个检索语句用空格分隔时,表示“与”逻辑,即等同于 AND。例如 warning error 等同于 warning AND error,表示检索内容中包含关键词 warningerror 的日志。
  • 检索语法中的字符均为日志服务的保留字符,若检索关键字中包含这些语法保留字符,均需要转义。

通用查询语法

操作符

说明

示例

AND

与逻辑操作符,表示取多个搜索结果的交集,指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。

__path__:\/var\/log\/* AND error

OR

或逻辑操作符,表示取多个搜索结果的并集。指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。

error OR warning

NOT

非逻辑操作符,表示搜索结果不包含 NOT 之后的关键词。指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。

ERROR AND NOT __path__:\/var\/log\/*

TO

范围逻辑操作符,TO 前后应加空格。

age:[1 TO 20]

''

单引号,单引号中的字符串包含预设的分词符时,被分词符拆分后的各个关键字之间为 AND 关系。

'today is friday'

""

双引号,双引号中的字符串包含预设的分词符时,被分词符拆分后的各个关键字之间为 AND 关系。

__hostname__:"Jone Doe"

:

冒号,表示键值检索,返回包含指定 Key 和 Value 的日志。

level:info

*

通配符,表示模糊查询。通配符*可以匹配零个、单个、多个字符。

level:erro*

?

通配符,表示模糊查询。通配符?可以匹配单个字符。

level:erro?

()

分组操作符,用于控制多个逻辑运算之间的优先级。

((__source__:192.168.10.10 AND __path__:\/var\/log\/*) NOT error)

>

范围操作符,表示在数值类型的字段中,value 大于某个数值的日志。

age:>18

>=

范围操作符,表示在数值类型的字段中,value 大于等于某个数值的日志。

age:>=18

<

范围操作符,表示在数值类型的字段中,value 小于某个数值的日志。

age:<18

<=

范围操作符,表示在数值类型的字段中,value 小于等于某个数值的日志。

age:<=18

[]

范围操作符,范围中包含边界值。

age:[20 TO 30]

{}

范围操作符,范围中不包含边界值。

age:{20 TO 30}

\

转义符。如果查询的关键词中包含保留字符,则需要通过转义符进行转义后再检索。转义后的字符代表字符本身,而不是不代表关键字。
需要转义的字符包括+ - = & | > < ! ( ) { } [ ] ^ " ~ * ? : \ /

__path__:\/images\/log

预留字段查询语法

保留关键字

说明

示例

__source__

筛选来源为指定 IP 地址的日志。支持通过通配符进行模糊查询。

__source__:127.0.0.*

__path__

筛选来源为指定路径下文件的日志。支持通过通配符进行模糊查询。

__path__:\/var\/log\/messages

__time__

通过日志中的 time 字段进行筛选,支持范围查询。

__time__:[1524952304123 TO 1724958207123]

检索示例

场景

语句

查询日志内容中包含 ERROR 的日志。

ERROR

查询日志 Key 中包含 level 字段的日志。

level:*

查询日志 Key 中不包含 level 字段的日志。

NOT level:*

查询来源为指定 IP 的某台机器或某些机器的日志。

__source__:192.168.10.10__source__:192.168.10.*

查询日志采集路径为特定名字的某个文件或某些文件的日志。

__path__:"/var/log/access.log"__path__:\/var\/log\/*.log

查询状态码为 4xx 的访问日志。

status:[400 TO 500}

查询状态码大于 400,即访问失败的日志。

status:>400

在 GET 请求的访问日志中,查询请求失败的日志。

method:GET AND status:>400

查询异常日志,即级别非 INFO 的日志。

NOT level:INFO

查询 ERROR 或 WARNING 级别的日志。

level:ERROR OR level:WARNING

查询指定机器上的异常日志,即来源为指定 IP 地址、级别非 INFO 的日志。

__source__:192.168.10.10 NOT level:INFO

来源为指定 IP 地址、级别为 ERROR 或 WARNING 的日志。

__source__:192.168.10.10 AND (level:ERROR OR level:WARNING)

查询指定机器上指定文件中的异常日志,即来源为指定 IP 地址、路径为指定文件、级别非 INFO 的日志。

(__source__:192.168.10.10 AND __path__:\/var\/log\/access.log) NOT level:INFO

通过预留字段 __pod_name__ 查询指定 Pod 名称的日志。

__pod_name__:nginx

查询 Pod 名称为 application,且请求延时大于 3s 的日志。

__pod_name__:application AND request_time:>3