搜索手册
搜索分析是您使用智能日志平台进行数据价值探索的重要功能,本文档为您介绍如何使用智能日志平台的搜索功能进行数据探索。
如何搜索
点击搜索分析选项卡,打开搜索分析界面。
初识搜索界面
搜索模块由搜索栏、时间范围、操作选项组成。
在搜索框输入搜索分析语句、选择时间范围和操作即可过滤出您想定位的日志。
输入搜索分析语句
例如,尝试找出 Nginx 日志中状态码是 404 的日志并找出这些日志的 IP。运行如下搜索语句:
status=404|fields +ip,status
选择时间范围
使用时间范围可以很大程度优化搜索,如果您知道问题发生的大致时间范围,将搜索时间范围缩小至问题发生的时间范围即可。
- 预设时间范围
智能日志平台提供了很多预设时间范围,方便您根据实际使用场景快速挑选时间范围。 - 相对时间范围:使用相对时间您可以方便的查看如前 5 分钟、前 10 分钟~前 5 分钟的日志。
- 到现在(实时):从过去某时间点到当前时间,当前时间实时变化。
- 到现在(固定时间):从过去某时间点到当前固定时间点,如当前时间是 2019 年 3 月 11 日 11 点 29 分,从 5 分钟前到现在(固定时间)指的是从 2019 年 3 月 11 日 11 点 24 分到 2019 年 3 月 11 日 11 点 29 分的时间范围。
- 绝对时间
您还可以使用绝对时间指定精确的时间范围,例如指定时间范围是 2019-08-10 20:39:09 ~ 2019-08-14 20:39:09。
操作栏
操作栏包括搜索操作(暂停、停止、清空、下载),可选预览模式、搜索限制、搜索模式(智能模式、极速模式、详细模式)。
-
您可以在搜索进行过程中暂停或停止搜索任务。
-
单击下载,可下载 CSV 格式、JSON 格式、TSV 格式的搜素结果。
-
搜索分析支持预览模式和非预览模式。预览模式下, 系统每秒钟分析一次当前已经扫描过的数据的结果并返回,这个过程会持续到所有数据都扫描完毕。非预览模式下,系统一次分析完完整的结果才返回。
-
支持对搜索返回结果进行数量限制,默认限制为500条,可选100条、1000条或自定义返回数量限制。
-
搜索分析支持不同的搜索模式:智能模式、极速模式、详细模式,详情阅读搜索模式。
理解搜索结果
搜索结果包括日志选项卡和可视化选项卡,搜索结果显示在哪个选项卡中取决于您使用的搜索命令类型。如果您在搜索栏使用统计分析语句,如 stats ,搜索结果将呈现可视化选项卡。关于搜索分析命令,请参阅 spl 参考手册。
日志选项卡
日志搜索结果显示日志统计直方图、日志内容、日志显示模式和字段显示栏。
- 日志统计直方图
日志统计直方图是每个时间点的日志数的直观显示。点击直方图区域可以缩小时间范围,查看选择直方图区域表示的时间范围内的日志数量。
- 日志内容
默认情况下,日志会从最新的时间开始显示,在每条日志中,匹配的搜索词会高亮显示。点击每条日志行首的展开符号,您可以看到日志中字段与字段值一一对应的表格。
默认情况下,字段表格包括如下字段:
名称 | 描述 |
---|---|
时间戳(_time) | 接收数据过程中定义的日志时间戳 |
主机名称(host) | 接收数据的主机 |
来源类型(sourcetype) | 数据上传时使用的来源类型 |
仓库(repo) | 存储数据的仓库 |
数据来源(origin) | 上传的文件名 |
您可以使用上述任意字段过滤日志内容,如
sourcetype="csv"
- 日志显示模式
在日志内容查看区域,智能日志平台提供几种日志阅读模式:文档模式、JSON 模式、表格模式。您可以根据自己的习惯切换。
- 字段显示栏
在数据搜索过程中,智能日志平台会同时进行数据字段提取。您可以在字段显示栏看到提取的全部字段。关于字段提取,请阅读字段提取文档。
鼠标划入字段显示栏的具体字段所在行,可以查看字段统计信息(字段统计报表)或添加感兴趣的字段。
* 字段统计信息:包括字段的去重计数、字段高频值、字段罕见值、字段计数top 10 的字段值、高频值等,点击可查看对应字段的统计报表。
-
添加感兴趣的字段:对字段进行筛选查看,添加后您可以在日志内容显示区域看到您感兴趣的字段以 key=value 形式显示。
-
划词过滤搜索结果
在日志内容显示区域,您可以划词过滤搜索结果(单击日志内容中的字段即可),系统提供如下几种功能:
- 加入搜索:在已有查询条件下查看包含该字段的日志内容。支持同时对多个关键字段划词。
- 新的搜索:查看包含该字段的所有日志内容。
- 从搜索中排除:查看排除该字段的所有日志内容
- 复制到剪贴板:对字段进行复制。
可视化选项卡
在搜索栏输入统计分析语句,搜索结果将显示在可视化选项卡中。
例如:统计日志总数。
repo="default"| stats count() as count by _time
搜索结果如下:
更多可视化功能的介绍,请阅读可视化手册。
搜索语法
智能日志平台支持 SPL 高级搜索分析语法,它提供 100 多种命令,可以搜索、关联、分析、可视化任何日志数据。关于SPL详细介绍,请阅读 SPL 参考手册。
智能日志平台通过 SPL search 命令搜索、过滤原始日志,一般来说,search 命令是spl 管道的首个命令,用来筛选出需用其他 spl 命令进行分析的日志。若 search 命令不是管道中的首个命令,它用于筛选之前命令的结果。本节介绍 search 命令的语法。
在 spl 语句的开头,通常会输入 search 命令搜索日志,但 search 关键词是可以省略的,如
search post=*
和
post=*
是等价的。
在搜索时,若您搜索的数据包含以下符号,需要以双引号 “” 包含起来:
+ -
&& || !
( ) { } [ ]
^ ” ~ * ? : \
搜索说明
1.在原始日志中搜索字符串,需指定完整的字符串内容。如:
原始日志中有短语 error ,需在搜索栏输入“error”,输入“e”、“erro”均无法搜到该条日志。
2.搜索字段,需指定完整的字段及值。如:
输入 type=“error” 返回包含 type="error"的日志结果,输入 type=* 返回所有包含 type字段的结果,输入type=“e”、type="erro"均无法搜到该条日志。
需注意,搜索加有引号的短语 “web error” 与不加引号时的搜索不同。搜索 web error 时,系统会返回包含"web" 和 “error” 的事件。搜索 “web error” 时,系统只返回包含短语 “web error” 的事件。
搜索条件编写规范
搜索条件编写规范说明如下:
通配符: *
逻辑运算符: AND, OR, NOT, ( )
字段值完全匹配: apache.method="get"
字段值模糊匹配: apache.status=*
全文短语检索: "ACCESS DENIED"
全文多关键词检索: ACCESS DENIED
字段数值范围: apache.status<=400 或 apache.status>400
字段值在列表中: apache.status in (200, 400)
简单正则表达式: /frontend[0-9]2/
详细语法规则的解释如下:
名称 | 语义 |
---|---|
* | 查询所有内容 |
AND | 查询交集 |
OR | 查询并集 |
NOT | 查询不包括 NOT 子句的结果,如 NOT status:200 不包含 status 值为 200 的数据 |
in | 查询包含某个值的数据,如 status IN (400,500) 查询 status 值为 400或 500 的数据 |
() | 把一个或多个搜索语句合并成一个搜索语句,提升优先级,如 status IN (400,500) 查询 status 值为400或500 的数据 |
| 转义字符,⽤于“转义”特定字符。如正则表达式搜索时表达式包含反斜杠的情况,如 request_path=/\/query\/abc\/.*/ 查询 request_path 字段匹配正则表达式 /query/abc/.* 的数据 |
|
>,=,<,<=,>=,!= | 区间查询,如 status:>=500 查询 status 大于 500 的数据 |
条件编写规范说明:
1.查询两个字符串的交集可省略 AND,即 query1 AND query2 等价于 query1 query2。
2.NOT 运算符仅适用于紧随 NOT 之后的字符串,若要查询排除多个字符串的结果,需写多个NOT 子句并将其用AND连接。如:NOT query1 AND NOT query2。
通配符查询
1.使用 ? 代替一个字符, * 代替0或者多个字符。
比如:
type=qu?ck type=bro*
注意使用这个查询会消耗大量资源,并且速度会降低。
正则表达式查询
正则表达式查询条件编写时,以"/"开头和结尾。
比如:
name=/joh?n(ath[oa]n)/
需注意,正则表达式中使用管道符 | 来表达 OR 条件。例如, A或B 的表达式为 A|B。由于管道符在 SPL 中⽤于分隔命令,正则表达式中用到管道符时,需用“”括起来。
查询举例
字段 name ,值等于 a 的记录:
name="a"
字段 ip ,内容等于 a 或 b 的记录:
ip in ("a", "b")
字段 hosts ,等于 a 或者 b ,且不等于 c 的记录:
hosts in (a,b) AND (NOT hosts="c")
字段 ip ,等于 a 或 b ,同时字段 hosts ,内容等于 c 的记录:
ip in (a, b, c) AND (hosts="c")
字段 count ,值大于 5 的记录:
count>=5