前言
最近公司要求所有应用接入统一日志管理平台ELK,所以经常会到kibana看板查询日志,为了提高问题排查效率,作为开发人员必需掌握Kibana Query Language。语法类型的知识,坐下笔记以防不时之需。
一、kibana是什么?
kiban是ELK技术栈里一个用来进行数据展示、分析、可视化的工具。主要数据源来自ES,经常会用它来做分布式系统应用日志的查询和分析。今天主要介绍的是如何用discover这个功能,来搜索我们已经记录到ES里的java应用日志。
二、使用步骤
1.存数据
不讲解
2.创建索引
不讲解
3.查询日志
假设我们已经做好了前两部,那么就可以通过discover来探索我们的日志数据了。
上图中红色框1的位置 就是我们索引日志时,使用的index name,这里支持模糊配置。选择好我们要分析的index之后,就可以在红框2里,输入KQL(kibana query language)来进行数据的过滤和分析了。有一定开发经验的同学都知道,日志是我们排查线上故障的一个重要帮手,很多情况下我们就是根据错误日志来定位问题,所以说分析的日志效率就决定了我们排查故障恢复业务的效率,从而提高系统可用性。下面主要讲解下KQL的语法,方便我们快速查找日志。
kibana7.0之后,开始支持KQL,再此之前,都是通过Lucene语法来查询的。为了方便讲解,假设我们记录日志index时,有4个field:服务器serverIp、日志等级level、日志详情message、响应码code。
3.1 匹配:
serverIp:10.100.249.111
3.2 短语
message:"Quick brown fox" 与message:Quick brown fox
带引号的话,会完全按照短语内容来匹配;不带引号,会做分词
3.3 组合
level:info and serverIp:1.1.1.1
serverIp:1.1.1.2 or serverIp:1.1.1.1
3.2 条件分组
level:INFO and (serverIp:1.1.1.2 or serverIp:1.1.1.1)
message:(aaa and bbb and ccc)
3.4 范围
code>200
not code:200
not (code:200 or code:300)
总结
为了方便自己查询,特此记录!