机器数据分析平台

  • 机器数据分析平台 > 使用文档 > 搜索手册

    搜索手册

    最近更新时间: 2021-02-18 17:56:32

    搜索分析是您使用智能日志平台进行数据价值探索的重要功能,本文档为您介绍如何使用智能日志平台的搜索功能进行数据探索。

    如何搜索

    点击搜索分析选项卡,打开搜索分析界面。

    初识搜索界面

    搜索模块由搜索栏、时间范围、操作选项组成。

    在搜索框输入搜索分析语句、选择时间范围和操作即可过滤出您想定位的日志。

    输入搜索分析语句

    例如,尝试找出 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
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close