ELK学习笔记之Kibana查询和使用说明

 

0x00 概述 

elasticsearch构建在Lucene之上,过滤器语法和Lucene相同html

Kibana接口概述nginx

Kibana接口分为四个主要部分:web

  • 发现算法

  • 可视化chrome

  • 仪表板apache

  • 设置api

咱们将按照列出的顺序浏览每一个部分的基础知识,并演示如何使用每一个接口。浏览器

 

0x01 Kibana探索

当您第一次链接到Kibana 4时,您将进入发现页面。 默认状况下,此页面将显示您的全部ELK的最近接收的日志。 在这里,你能够根据搜索查询经过筛选,找到特定的日志消息,则缩小搜索结果与时间过滤器一个特定的时间范围。缓存

如下是Kibana Discover界面元素的细分:app

  • 搜索栏:直属主导航菜单。 使用此选项可搜索特定字段和/或整个邮件

  • 时间过滤器:右上(时钟图标)。 使用此选项能够根据各类相对和绝对时间范围过滤日志

  • 字段选择:左,搜索栏下。 选择字段要修改哪些是显示在日志查看

  • 日期柱状图:搜索栏下的条形图。 默认状况下,这将显示全部日志的计数,相对于时间(x轴),由搜索和时间过滤器匹配。 您能够单击小节,或单击并拖动,以缩小时间过滤器

  • 日志视图:右下角。 使用这个要看我的的日志信息,并显示记录田野过滤后的数据。 若是没有选择字段,则显示整个日志消息

此动画演示了Discover页面的几个主要功能:

如何使用Kibana发现

这里是对正在执行的操做的逐步描述:

  1. 选择了“类型”字段,它限制了每一个日志记录显示的内容(右下) – 默认状况下,显示整个日志消息

  2. 搜索type: "nginx-access" ,它只匹配Nginx的访问日志

  3. 展开最新的Nginx访问日志以更详细地查看它

请注意,结果被限制为“最后15分钟”。 若是您没有得到任何结果,请确保在指定的时间段内生成了与您的搜索查询匹配的日志。

收集和过滤的日志消息取决于您的Logstash和Logstash转发器配置。 在咱们的示例中,咱们收集syslog和Nginx访问日志,并经过“类型”过滤它们。 若是您正在收集日志消息,但没有将数据过滤到不一样的字段,对它们进行查询将更加困难,由于您将没法查询特定字段。

搜索语法

搜索提供了一种简单而强大的方法来选择特定的日志消息子集。 搜索语法很是不言自明,并容许布尔运算符,通配符和字段过滤。 例如,若是你想找到谷歌Chrome浏览器用户生成的Nginx的访问日志,您能够搜索type: "nginx-access" AND agent: "chrome" 。 您还能够按特定主机或客户端IP地址范围或日志中包含的任何其余数据进行搜索。

当您建立要保持一个搜索查询,你能够经过点击保存搜索图标,而后保存按钮,就像这个动画:

如何保存Kibana搜索

保存的搜索能够在任什么时候候经过点击加载保存搜索图标能够打开和建立可视化时,他们也可使用。

咱们将保存type: "nginx-access"搜索为“类nginx的访问”,并用它来建立可视化。

 

在kibana搜索的时候,能够简单的使用 Lucene通用的语法,或者使用基于JSON格式QueryDSL(DSL:领域特定语言)来构造搜索各类请求(更加灵活,方便构造复杂查询)。

Lucene提供了方便您建立自建查询的API,也经过QueryParser提供了强大的查询语言。

本文讲述Lucene的查询语句解析器支持的语法,Lucene的查询语句解析器是使用JavaCC工具生成的词法解析器,它将查询字串解析为Lucene Query对象。
 
项(Term)

一条搜索语句被拆分为一些项(term)和操做符(operator)。项有两种类型:单独项和短语。
单独项就是一个单独的单词,例如”test” , “hello”。
短语是一组被双引号包围的单词,例如”hello dolly”。
多个项能够用布尔操做符链接起来造成复杂的查询语句(AND OR )。
 
 
域(Field)
Lucene支持域。您能够指定在某一个域中搜索,或者就使用默认域。域名及默认域是具体索引器实现决定的。kibana的默认域就是message …. message会包含你全部日志,包括你grok过滤以后的。 
他的搜索语法是:  域名+”:”+搜索的项名。


举个例子,假设某一个Lucene索引包含两个域,title和text,text是默认域。若是您想查找标题为”The Right Way”且含有”don’t go this way”的文章,您能够输入:
title:”The Right Way” AND text:go
或者
title:”Do it right” AND right
由于text是默认域,因此这个域名能够不行。
注意:域名只对紧接于其后的项生效,因此
title:Do it right
只有”Do”属于title域。”it”和”right”仍将在默认域中搜索(这里是text域)。
 
项修饰符(Term Modifiers)
Lucene支持项修饰符以支持更宽范围的搜索选项。
kibana默认就是lucene搜索的,一些模糊搜索是能够用通配符,Lucene支持单个与多个字符的通配搜索。
使用符号”?”表示单个任意字符的通配。
使用符号”*”表示多个任意字符的通配。
单个任意字符匹配的是全部可能单个字符。例如,搜索”text或者”test”,能够这样:
te?t
多个任意字符匹配的是0个及更多个可能字符。例如,搜索test, tests 或者 tester,能够这样:
test*
您也能够在字符窜中间使用多个任意字符通配符。
te*t
注意:您不能在搜索的项开始使用*或者?符号。
 
范围查询

有一些需求是range的范围类型的,

 

1
mod_date:[20020101 TO 20030101]

 

模糊查询
Lucene支持基于Levenshtein Distance与Edit Distance算法的模糊搜索。要使用模糊搜索只须要在单独项的最后加上符号”~”。例如搜索拼写相似于”roam”的项这样写:
roam~
此次搜索将找到形如foam和roams的单词。
注意:使用模糊查询将自动获得增量因子(boost factor)为0.2的搜索结果.
 
 
邻近搜索(Proximity Searches)
Lucene还支持查找相隔必定距离的单词。邻近搜索是在短语最后加上符号”~”。例如在文档中搜索相隔10个单词的”apache”和”jakarta”,这样写:
“jakarta apache”~10
 
 
Boosting a Term
Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, “^”, symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.
Lucene能够设置在搜索时匹配项的类似度。在项的最后加上符号”^”紧接一个数字(增量值),表示搜索时的类似度。增量值越高,搜索到的项相关度越好。
Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for jakarta apache and you want the term “jakarta” to be more relevant boost it using the ^ symbol along with the boost factor next to the term. You would type:
经过增量一个项能够控制搜索文档时的相关度。例如若是您要搜索jakarta apache,同时您想让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,也就是您输入:
 
jakarta^4 apache
This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:
这将使得生成的doucment尽量与jakarta相关度高。您也能够增量短语,象如下这个例子同样:
“jakarta apache”^4 “jakarta lucene”
By default, the boost factor is 1. Although, the boost factor must be positive, it can be less than 1 (i.e. .2)
默认状况下,增量值是1。增量值也能够小于1(例如0.2),但必须是有效的。
 
 
布尔操做符
布尔操做符可将项经过逻辑操做链接起来。Lucene支持AND, “+”, OR, NOT 和 “-”这些操做符。(注意:布尔操做符必须所有大写)
OR
OR操做符是默认的链接操做符。这意味着若是两个项之间没有布尔操做符,就是使用OR操做符。OR操做符链接两个项,意味着查找含有任意项的文档。这与集合并运算相同。符号||能够代替符号OR。
搜索含有”xiaorui.cc apache” 或者 “xiaorui.cc”的文档,可使用这样的查询:
“jakarta apache” jakarta

 

1
2
3
"xiaorui.cc apache" xiaorui.cc
或者
"xiaorui.cc apache" OR xiaorui.cc

 
AND
AND操做符匹配的是两项同时出现的文档。这个与集合交操做相等。符号&&能够代替符号AND。
搜索同时含有”jakarta apache” 与 “jakarta lucene”的文档,使用查询:
 

1
"jakarta apache" AND "jakarta lucene"

+
“+”操做符或者称为存在操做符,要求符号”+”后的项必须在文档相应的域中存在。
搜索必须含有”jakarta”,可能含有”lucene”的文档,使用查询:

+jakarta apache

他其实跟AND 是有些像的,直接在lucene query  ==》   A  B的话,意思是 A 或者B的。 这有些蛋疼… …  

 
NOT
NOT操做符排除那些含有NOT符号后面项的文档。这和集合的差运算相同。符号!能够代替符号NOT。
搜索含有”jakarta apache”,可是不含有”jakarta lucene”的文档,使用查询:
“jakarta apache” NOT “jakarta lucene”
注意:NOT操做符不能单独与项使用构成查询。例如,如下的查询查不到任何结果:
NOT “jakarta apache”
 
-
“-”操做符或者禁止操做符排除含有”-”后面的类似项的文档。
搜索含有”jakarta apache”,但不是”jakarta lucene”,使用查询:
“jakarta apache” -”jakarta lucene”
 
 
分组(Grouping)
Lucene支持使用圆括号来组合字句造成子查询。这对于想控制查询布尔逻辑的人十分有用。
搜索含有”jakarta”或者”apache”,同时含有”website”的文档,使用查询:
(jakarta OR apache) AND website
这样就消除了歧义,保证website必须存在,jakarta和apache中之一也存在。
 
 
转义特殊字符(Escaping Special Characters)
Lucene支持转义特殊字符,由于特殊字符是查询语法用到的。如今,特殊字符包括
+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \
转义特殊字符只需在字符前加上符号\,例如搜索(1+1):2,使用查询
\(1\+1\)\:2

 

 

 

0x02 Kibana可视化

Kibana可视化页面是您能够在其中建立,修改和查看本身的自定义可视化。 有几种不一样类型的可视化,从垂直柱状图饼状图来平铺图 (用于在地图上显示的数据)和数据表 。 可视化还能够与其余有权访问您的Kibana实例的用户共享。

若是这是您第一次使用Kibana可视化,您必须从新加载字段列表,而后才能继续。 说明要作到这一点都覆盖在刷新野外数据款,下Kibana设置部分。

建立垂直条形图

要建立一个可视化,首先,单击可视化菜单项。

决定所需的可视化类型,而后选择它。 咱们将建立一个垂直条形图 ,这是一个很好的起点。

如今您必须选择搜索源。 您能够建立新的搜索或使用保存的搜索。 咱们将与后者的方法去,并选择咱们以前建立的类型nginx的访问搜索。

首先,右侧的预览图将是一个实心条(假设您的搜索找到日志消息),由于它只包含Y轴的“计数”。 也就是说,它只是显示使用指定的搜索查询找到的日志数。

为了使可视化更实用,让咱们添加了一些新的水桶给它。

首先,添加X轴斗,而后单击聚合下拉菜单,而后选择“日期直方图”。 若是你点击应用按钮,单条会分裂成沿X轴的几家酒吧。 如今,计数显示为多个条形,划分为时间间隔(能够经过从下拉菜单中选择间隔进行修改) – 相似于您在“发现”页面上看到的内容。

若是咱们想使图形更有趣,咱们能够单击添加子聚合按钮。 选择拆分条吊桶式。 单击子汇集下拉菜单,而后选择“重要条款”,而后单击字段下拉菜单并选择“clientip.raw”,而后单击大小字段,而后输入“10”。 点击应用按钮来建立新的图形。

这里是你应该看到的截图:

Kibana可视化设置

若是可视化的日志由多个IP地址生成(即多我的访问您的网站),您会看到每一个条将被分为彩色段。 每一个彩色段表明由特定IP地址(即您网站的特定访问者)生成的日志计数,图表将显示最多10个不一样的段(由于大小设置)。 您能够鼠标悬停并单击图中的任何项目,以深刻查看特定的日志消息。

当您准备好保存您的可视化,单击保存可视化图标,顶部附近,而后将其命名,而后点击保存按钮。

建立另外一个可视化

在继续下一部分以前,咱们将演示如何建立仪表板,您应该至少建立一个可视化。 尝试并探索各类可视化类型。

例如,您能够建立前5(最高计数)日志“类型”的饼图。 要作到这一点,请单击可视化 ,而后选择饼图 。 而后使用搜索 ,并离开搜索为“”(即全部日志)。 而后选择*分割片**桶。 点击汇集下拉菜单,选择“重大条款”,点击字段下拉,选择“type.raw”,而后单击大小字段,而后输入“5”。 如今点击应用按钮,保存可视化的“五大”。

下面是刚才描述的设置的屏幕截图:

饼图设置

由于,在咱们的示例中,咱们只收集syslogs和Nginx访问日志,在饼图中只有两个切片。

一旦你完成了可视化,让咱们继续建立一个Kibana仪表板。

Kibana仪表板

Kibana仪表板页面可供您建立,修改和查看本身的自定义仪表板。 使用信息中心,您能够将多个可视化结果合并到单个页面上,而后经过提供搜索查询或经过单击可视化中的元素来选择过滤器来对其进行过滤。 仪表板对于您想要获取日志概述以及在各类可视化和日志之间创建关联很是有用。

建立仪表板

要建立仪表盘Kibana,首先,单击仪表盘菜单项。

若是您还没有建立信息中心,则会看到一个大部分空白的页面,其中显示“准备开始?”。 若是您没有看到这个画面(也就是已经有仪表盘上的可视化),按新的仪表盘图标 (搜索栏的右边)到那里。

此动画演示如何向信息中心添加可视化:

建立Kibana仪表板

下面是正在执行的步骤的细分:

  1. 点击添加可视化图标

  2. 添加了“日志计数”饼图和“Nginx:十大客户端IP”直方图

  3. 折叠添加可视化菜单

  4. 从新安排和调整仪表板上的可视化

  5. 点击保存仪表盘图标

在保存信息中心以前选择一个名称。

这应该给你一个好主意,如何建立一个仪表板。 继续建立您认为可能须要的任何仪表板。 接下来咱们将介绍使用信息中心。

使用仪表板

能够经过输入搜索查询,更改时间过滤器或单击可视化中的元素进一步过滤仪表板。

例如,若是您单击直方图中的特定颜色段,Kibana将容许您对该段表示的重要术语进行过滤。 如下是将过滤器应用于信息中心的示例屏幕截图:

过滤信息中心

请务必点击Apply Now按钮来过滤结果,并重绘仪表盘的可视化效果。 能够根据须要应用和移除过滤器。

搜索和时间过滤器的工做方式与“发现”页面相同,只是它们仅应用于仪表板中显示的数据子集。

Kibana设置

Kibana设置页面容许您更改各类默认值或索引模式。 在本教程中,咱们将保持它的简单和重点指标对象部分。

从新加载字段数据

当您向Logstash数据添加新字段时,例如,若是为新日志类型添加过滤器,则可能须要从新加载字段列表。若是在Kibana中找不到已过滤的字段,则必须从新加载字段列表,由于此数据只会按期高速缓存。

要作到这一点,单击设置菜单项,而后单击“logstash- *”(下指数模式 ):

从新加载字段列表

而后单击黄色刷新字段列表按钮。 点击OK按钮进行确认。

编辑保存的对象

“对象”部分容许您编辑,查看和删除任何已保存的仪表板,搜索和可视化。

到那里,点击设置菜单项,而后将对象子菜单。

在这里,您能够从选项卡中选择以查找要编辑,查看或删除的对象:

编辑保存的对象

在截图中,咱们选择了一个重复的可视化。 能够经过单击相应的按钮来编辑,查看或删除它。

 

原文连接

相关文章
相关标签/搜索