[关闭]
@runzhliu 2018-01-02T08:33:47.000000Z 字数 1903 阅读 960

Kibana 日志查询

Kibana 推荐系统


1 概述

很多系统的日志都会放在 Kibana 供查询,就是所谓的 ELK。Kibana 除了可以使用界面供的一些 tab 或者 button 去筛选日志,也可以在搜索栏中使用 Lucene 的语法简单的交互式查询。可以做基于字段的特定搜索,过滤数据,也可以查看索引号的文档。
查询的语法可以参考 官方文档 非常易读,非常容易,包括正则语法和其他模糊匹配方法。


2 Lucene 语法查询

2.1 简易查询

如果查询的时候没有明确查询的字段,会默认为 _all 字段,也就是全文查询。也可以指定一个字段,又称为 field 来查询。

  1. # 全文查询 Exception
  2. Exception
  3. # 指定查询字段 message 里的 Exception
  4. message: Exception
  5. # 查询短语
  6. message: "java.lang.NullPointerException"
  7. # 任何 message 字段都包含 Exception
  8. message\*: Exception
  9. # 通配符的使用,? 代替单个字符,* 代替零个或者多个字符
  10. message: Exceptio*
  11. # 正则表达式通过使用 / 包围,可以植入到查询的字符串中
  12. message: /Ex?(cep[tion])/
  13. # 另一个正则的使用,匹配的含义是「两位非abc的任意字符」
  14. info.recallId: /[^abc]{2}/

2.2 多字段查询

可以通过一些布尔操作符来使用,如果查询中没有任意的操作符号,那么默认使用 OR 操作符。

  1. # 支持 AND, OR, NOT,也可以写成&&, ||, !操作符
  2. message: ((Exception AND Error) OR (Error AND Exception) OR Error) AND NOT Exception
  3. # 包含 lucene 但不包含 elasticsearch
  4. lucene NOT elasticsearch
  5. # + 必须包含,其他可有可无,lucene 必须包含,apache 可有可无...
  6. +lucene apache
  7. # 不能出现的操作符号"-",包含了 lucence,但不包含 apache...
  8. +lucene-apache

2.3 范围操作

可以指定日期、数字或者字符串字段的范围

  1. # [min TO max] 是闭区间
  2. # {min TO max} 是开区间
  3. @timestamp: [1510536210000 TO 1510550000000]
  4. # * 表示一端不限制范围
  5. count:[10 TO *]

2.4 转义

保留字符包括以下,需要使用转义符来进行转义:

  1. # 例子
  2. message: "domain\=jobmd_ent4ent"
  3. # 转义符
  4. +-=&&||><!(){}[]^"~*?:\/

2.5 模糊查询

使用"~”字符以及一个紧随其后的整数值,当使用该修饰符修饰一个词项的时候,意味着我们想搜索那些包含该此项近词项的文档。"~"字符后的整数值确定了近似词项与原始词项的最大编辑距离。

  1. # mastering book Elasticsearch 也会被认为匹配
  2. title: "mastering Elasticsearch"~2

3 Kibana 中一些好用的功能

可以保存之前的 query,通过历史记录可以查找最近的使用。

3.2 时间过滤器

可以设置相对 relative 或者绝对 absolute 时间过滤器,前者是相对于当前时间的时间,后者是绝对时间。

3.3 自动刷新

固定的查询条件的情况下,可以设置自动刷新的时间来刷新可视区域。

3.4 直方图选择区域

选择区域可以出发时间过滤器。

3.5 字段列表搜索字段

可以通过 add 添加不同组合。

3.6 share 功能

导航栏处有一个 share 按钮,将查询的语句通过链接的方式进行分享,分别团队成员一起查询。


4 应用例子-某用户的推荐 bad case

  1. # 已知 domain 为 bbs_app_recomm,并且用户名为「oscar」的请求,在2017年11月7日 下午4点前后,有一次推荐的 bad case,需要这次推荐的过程,了解为何会产生这次推荐的结果。
  2. # 通过查询到的结果上下浏览,得到该用户的 recall 和 rerank 结果,大致可以找到 bad case 的原因。
  3. message: "oscar" AND @timestamp: 1510042056000
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注