本文内容讲述EFK日志分析系统之Kibana基本使用
EFK
EFK是三个开源软件的缩写,分别表示:Elasticsearch , Fluent, Kibana , 其中ELasticsearch负责日志保存和搜索,Fluent负责收集日志,Kibana 负责界面。
EFK和大名鼎鼎的ELK只有一个区别,那就是EFK把ELK的Logstash替换成了Fluent,因为Fluent相对于Logstash来说有2个好处:
1、侵入低,无需修改程序目前任何代码和配置
2、相对于Logstash来说性能高,Logstash对于IO占用很大
Elasticsearch
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Fluent
Fluentd是一个完全免费且开源的日志收集系统,性能敏感的部分用C语言编写,插件部分用Ruby编写,500多种插件,只需很少的系统资源即可轻松实现”Log Everything”。Fluentd 主要由Input输出、Buffer缓冲、Output输出三大部分组成。这三大部分都是以插件的形式存在。当然还有其他辅助插件如Filter、Formatter等用于数据处理或格式化。
Kibana
Kibana可以为 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
架构图
(1)进入Kibana的管理界面
(2)第一次访问Kibana是,系统会提示你定义一个索引模式以匹配一个或多个索引的名字,这些字段是匹配到的这个索引配置的字段。
(3)你可以从Discover页面交互式的探索你的数据。你可以访问与所选择的索引默认匹配的每个索引中的每个文档。你可以提交查询请求,过滤搜索结构,并查看文档数据。你也可以看到匹配查询请求的文档数量,以及字段值统计信息。如果你选择的索引模式配置了time字段,则文档随时间的分布将显示在页面顶部的直方图中。
(4)设置精确的时间过滤
(5)你可以在搜索框中输入查询条件来查询当前索引模式匹配的索引。在查询的时候,你可以使用Kibana标准的查询语言(基于Lucene的查询语法)或者完全基于JSON的Elasticsearch查询语言DSL。Kibana查询语言可以使用自动完成和简化的查询语法作为实验特性,您可以在查询栏的“选项”菜单下进行选择。
当你提交一个查询请求时,直方图、文档表和字段列表都会更新,以反映搜索结果。命中(匹配到的文档)总数会显示在工具栏中。文档表格中显示了前500个命中。默认情况下,按时间倒序排列,首先显示最新的文档。你可以通过点击“Time”列来逆转排序顺序
(6)Lucene查询语法
Kibana查询语言基于Lucene查询语法。下面是一些提示,可能会帮到你:
- 为了执行一个文本搜索,可以简单的输入一个文本字符串。例如,如果你想搜索web服务器的日志,你可以输入关键字”safari“,这样你就可以搜索到所有有关”safari”的字段
- 为了搜索一个特定字段的特定值,可以用字段的名称作为前缀。例如,你输入”status:200“,将会找到所有status字段的值是200的文档
- 为了搜索一个范围值,你可以用括号范围语法,[START_VALUE TO END_VALUE]。例如,为了找到状态码是4xx的文档,你可以输入status:[400 TO 499]
- 为了指定更改复杂的查询条件,你可以用布尔操作符 AND , OR , 和 NOT。例如,为了找到状态码是4xx并且extension字段是php或者html的文档,你可以输入status:[400 TO 499] AND (extension:php OR extension:html)
(7)按字段过滤
以上是控制列表显示哪些字段,还有一种方式是在查看文档数据的时候点那个像书一样的小图标
加入想要显示的字段到过滤中,比如log,则此事右侧边栏将仅显示log标签的内容
我们还可以自定义编辑一个DSL查询语句,用于过滤筛选,例如
(8)图表查看(可自定义图表格式方便查看)
(9)自定义仪表盘(方便查看和统计)
注意时间状态栏在所有的统计查询界面共享,所以如果设置了统计区的时间间隔在仪表盘也会生效