ELK学习笔记之Kibana查询和使用说明
0x00 概述
elasticsearch构建在Lucene之上,过滤器语法和Lucene相同
Kibana接口概述
Kibana接口分为四个主要部分:
- 发现
我们将按照列出的顺序浏览每个部分的基础知识,并演示如何使用每个接口。
0x01 Kibana探索
当您第一次连接到Kibana 4时,您将进入发现页面。 默认情况下,此页面将显示您的所有ELK的最近接收的日志。 在这里,你可以根据 搜索查询 通过筛选,找到特定的日志消息,则缩小搜索结果与 时间过滤器 一个特定的时间范围。
以下是Kibana Discover界面元素的细分:
- 搜索栏: 直属主导航菜单。 使用此选项可搜索特定字段和/或整个邮件
- 时间过滤器: 右上(时钟图标)。 使用此选项可以根据各种相对和绝对时间范围过滤日志
- 字段选择: 左,搜索栏下。 选择字段要修改哪些是显示在 日志查看
- 日期柱状图: 搜索栏下的条形图。 默认情况下,这将显示所有日志的计数,相对于时间(x轴),由搜索和时间过滤器匹配。 您可以单击小节,或单击并拖动,以缩小时间过滤器
- 日志视图: 右下角。 使用这个要看个人的日志信息,并显示记录 田野 过滤后的数据。 如果没有选择字段,则显示整个日志消息
此动画演示了Discover页面的几个主要功能:
这里是对正在执行的操作的逐步描述:
- 选择了“类型”字段,它限制了每个日志记录显示的内容(右下) – 默认情况下,显示整个日志消息
-
搜索
type:
"nginx-access"
,它只匹配Nginx的访问日志 - 展开最新的Nginx访问日志以更详细地查看它
请注意,结果被限制为“最后15分钟”。 如果您没有获得任何结果,请确保在指定的时间段内生成了与您的搜索查询匹配的日志。
收集和过滤的日志消息取决于您的Logstash和Logstash转发器配置。 在我们的示例中,我们收集syslog和Nginx访问日志,并通过“类型”过滤它们。 如果您正在收集日志消息,但没有将数据过滤到不同的字段,对它们进行查询将更加困难,因为您将无法查询特定字段。
搜索语法
搜索提供了一种简单而强大的方法来选择特定的日志消息子集。 搜索语法非常不言自明,并允许布尔运算符,通配符和字段过滤。 例如,如果你想找到谷歌Chrome浏览器用户生成的Nginx的访问日志,您可以搜索
type:
"nginx-access" AND agent:
"chrome"
。 您还可以按特定主机或客户端IP地址范围或日志中包含的任何其他数据进行搜索。
当您创建要保持一个搜索查询,你可以通过点击 保存搜索 图标,然后 保存 按钮,就像这个动画:
保存的搜索可以在任何时候通过点击 加载保存搜索 图标可以打开和创建可视化时,他们也可以使用。
我们将保存
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”,可以这样: 多个任意字符匹配的是0个及更多个可能字符。例如,搜索test, tests 或者 tester,可以这样: test* 您也可以在字符窜中间使用多个任意字符通配符。 注意:您不能在搜索的项开始使用*或者?符号。 范围查询
有一些需求是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。 搜索含有”xiaorui.cc apache” 或者 “xiaorui.cc”的文档,可以使用这样的查询: “jakarta apache” jakarta
1 3 |
"xiaorui.cc apache" xiaorui.cc "xiaorui.cc apache" OR xiaorui.cc |
---|
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。 搜索含有”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”。 点击 应用 按钮来创建新的图形。
这里是你应该看到的截图:
如果可视化的日志由多个IP地址生成(即多个人访问您的网站),您会看到每个条将被分为彩色段。 每个彩色段代表由特定IP地址(即您网站的特定访问者)生成的日志计数,图表将显示最多10个不同的段(因为大小设置)。 您可以鼠标悬停并单击图中的任何项目,以深入查看特定的日志消息。
当您准备好保存您的可视化,单击 保存可视化 图标,顶部附近,然后将其命名,然后点击 保存 按钮。
创建另一个可视化
在继续下一部分之前,我们将演示如何创建仪表板,您应该至少创建一个可视化。 尝试并探索各种可视化类型。
例如,您可以创建前5(最高计数)日志“类型”的饼图。 要做到这一点,请单击 可视化 ,然后选择 饼图 。 然后使用 新 的 搜索 ,并离开搜索为 “”(即所有日志)。 然后选择* 分割片**桶。 点击 聚集 下拉菜单,选择“重大条款”,点击 字段 下拉,选择“type.raw”,然后单击 大小 字段,然后输入“5”。 现在点击 应用 按钮,保存可视化的“五大”。
下面是刚才描述的设置的屏幕截图:
因为,在我们的示例中,我们只收集syslogs和Nginx访问日志,在饼图中只有两个切片。
一旦你完成了可视化,让我们继续创建一个Kibana仪表板。
Kibana仪表板
Kibana仪表板页面可供您创建,修改和查看自己的自定义仪表板。 使用信息中心,您可以将多个可视化结果合并到单个页面上,然后通过提供搜索查询或通过单击可视化中的元素来选择过滤器来对其进行过滤。 仪表板对于您想要获取日志概述以及在各种可视化和日志之间建立关联非常有用。
创建仪表板
要创建仪表盘Kibana,首先,单击 仪表盘 菜单项。
如果您尚未创建信息中心,则会看到一个大部分空白的页面,其中显示“准备开始?”。 如果您没有看到这个画面(也就是已经有仪表盘上的可视化),按 新的仪表盘图标 (搜索栏的右边)到那里。
此动画演示如何向信息中心添加可视化:
下面是正在执行的步骤的细分:
- 点击 添加可视化图标