
1.3 Kibana概览
Kibana在整个Elastic Stack家族中起到数据可视化的作用,也就是通过图、表、统计等方式将复杂的数据以更直观的形式展示出来。由于Kibana运行于Elasticsearch基础之上,所以可以将Kibana视为Elasticsearch的用户图形界面(Graphic User Interface,GUI)。
1.3.1 安装与配置
Kibana同时支持Linux和Windows操作系统,也可以使用Docker直接启动,但在Kibana 6.0以后只支持64位操作系统。Kibana提供了DEB、RPM等Linux安装包,也提供了tar.gz和zip格式的免安装压缩包,但没有提供Windows下的MSI安装包。Kibana基于Node.js开发,所以对Kibana的安装也很简单,可以下载相应操作系统的压缩包,直接解压缩到安装目录即可。使用DEB或RPM安装包安装Kibana只是在安装路径会有一些不同,文件会根据文件夹的用途安装到不同的目录。例如,Kibanba本身会被安装到“/usr/share/kibana”目录,而配置文件将会安装到“/etc/kibana”中,数据则安装在“/var/lib/kibana”中。建议初学者直接使用解压缩的方式安装,并且最好将Kibana与Elasticsearch安装在同一台机器上。
1.3.2 连接Elasticsearch
由于Kibana基于Elasticsearch,所以在使用Kibana之前需要先将Elasticsearch启动起来。如果安装Kibana的机器与Elasticsearch是同一台机器,那不需要做任何修改就可以启动Kibana。启动命令位于Kibana安装路径下的bin目录中,Windows下为kibana.bat,Linux下则为kibana。
如果Kibana没有与Elasticsearch安装在同一台机器上,那么首先要保证可以通过这台机器远程访问Elasticsearch。这要求Elasticsearch在安装时指定开放IP地址为0.0.0.0,或者直接填写可访问的IP地址。假如已经安装完毕,可以在Elasticsearch配置目录中找到elastic-search.yml文件,用文本编辑器打开后找到“network.host:192.168.0.1”,修改为“network.host:0.0.0.0”,或者改成其他可直接访问的IP地址。接下来,在Kibana的配置目录中(默认为安装路径下的config目录),找到kibana.yml文件,用文本编辑器打开后找到“elasticsearch.hosts:["http://localhost:9200"]”,将其中的localhost修改为Elasticsearch所在的机器IP即可。
1.3.3 体验Kibana
Kibana默认开放5601端口,在浏览器地址栏中输入“http://localhost:5601”就能看到Kibana的欢迎页面了,如图1-10所示。

图1-10 Kibana欢迎页面
欢迎页面上有两个按钮,第一个按钮是Try our sample data,单击它会进入导入样例数据页面;第二个按钮是Explore on my own,单击它则会进入Kibana的Home页面。Kibana的欢迎页面只在第一次访问时出现,之后再次访问Kibana都会直接进入Home页面。样例数据可以通过Home页面找到,所以我们先单击Explore on my own进入Home页面,如图1-11所示。

图1-11 Kibana Home页
Kibana界面整体分为左右两侧,左侧为导航栏,右侧则是功能展示区域。Kibana 7之前导航栏默认是展开的,但在7.0.0以后导航栏默认是收起的,可单击导航栏最下方的箭头展开。Kibana 7界面风格也发生了比较大的变化,导航栏中还增加了“Recently viewed”功能,用于保存历史访问记录。在具体功能上,Kibana 7也做了一些调整,这将在本书第9章中介绍。现在读者可以单击这些菜单,体验Kibana的强大功能。
从下一章开始介绍的Elasticsearch,其中所讲述的REST接口都可以通过Kibana提供的Dev工具直接访问。这个工具在导航栏中的名称是Dev Tools,单击导航栏上的扳手图标打开Dev Tools操作界面,如图1-12所示。
这是一个非常强大而实用的工具,在开发时可以通过这个工具对REST接口进行编写和验证。Dev工具在用户输入时会给出智能提示,提示不仅限于接口关键字,索引中定义的字段名称也可以提示出来。Dev工具分为左右两个文本框,左侧可以直接输入特定格式的REST接口调用。输入框在用户输入时会自然地划分出行号和网格,以帮助用户对齐参数格式防止出错。它甚至还支持列编辑,先按Alt键再使用鼠标左键就可以选择列。输入完成后,单击文本框右上角的绿色箭头,或使用快捷键Ctrl+Enter,执行结果将显示在右侧文本框中。Dev工具还有一些快捷键,可以在Dev工具页上单击Help查看。
首次进入Dev工具会出现一些说明文字,单击Get to work会收起工具说明。下面,让我们来体验一下Elasticsearch索引、文档相关的接口吧。

图1-12 Dev Tools
1.创建索引
Elasticsearch所有数据都存储在索引中,所以第一步来看看怎么创建索引。如果没有特别的设置,索引的创建极其简单,直接使用PUT请求,发送索引名称就可以了。例如,如图1-13所示,要创建一个名为test的索引,直接在左侧文本框中填写“PUT test”,单击文本框右上角的绿色按钮,或使用快捷键Ctrl+Enter,索引就会被创建出来,并返回JSON串到右侧文本框。这种感觉就像是在与Elasticsearch聊天一样简单。

图1-13 创建test索引
2.查看索引
按照REST风格的要求,查看索引显然应该使用GET请求,即“GET test”,如图1-14所示。从返回的结果可以看到,test索引的“number_of_shards”为1,也就是要求创建1个分片;“number_of_replicas”为1,也就是副本为1个。所以这个时候如果通过GET _cat/health查看集群健康状态一定是yellow,因为当前只有一个节点,所以复本数量为0。Elasticsearch默认创建分片的数量在版本7之前是5个,但在新版本中都已经改为1个了。

图1-14 查看test索引
3.添加文档
向索引中添加文档可以通过POST请求,也可以通过PUT请求。通过下面的PUT请求,可以向test索引中添加一条新文档:

示例1-3 添加文档
在示例1-3中的请求,test是前面刚刚创建的索引名称;_doc是索引的映射类型,这个名称在Elasticsearch 7以后只能是_doc;最后面的1是新增加文档的编号,类似于关系型数据库中的主键概念。PUT请求体中,“msg”是文档的字段名称,而“Hello,World!”则是它的值,如图1-15所示。

图1-15 添加文档
Elasticsearch在接收到这个文档后,会对文档字段的内容进行分析处理,然后创建倒排索引以提升检索速度。详细内容将在本书第2章介绍。
4.查看文档
要查看上面新添加的文档也很简单,直接发送下面的GET请求即可。

示例1-4 查看文档
这种查询方式是通过文档编号查看,但在大多数情况下是不知道文档编号的,此时就需要更复杂的数据搜索功能了,详细可参考本书第4~6章。
1.3.4 导入样例数据
Kibana还为新用户提供了样例数据,可以通过Kibana界面将这些数据导入到Elasticsearch中。在导入样例数据的同时,Kibana会为它们创建可视化面板、仪表盘等可视化对象,这对于学习Kibana很有帮助。不仅如此,在本书介绍Elasticsearch文档检索时会使用这些样例数据做示例,所以建议读者现在就将它们导入到Elasticsearch中。添加样例数据的链接不是很明显,可以在Kibana首页找到,如图1-16所示。

图1-16 添加样例数据
单击Add sample data下面的链接,将会进入样例数据选择页面。Kibana提供了三种样例数据,包括eCommerce orders(电子订单)、flight data(飞行记录)和web logs(web日志)等,如图1-17所示。
本书后续章节的示例中会大量用到“Sample flight data”,即飞行记录数据;部分地用到“Sample web logs”,即Web日志数据。建议读者将这两个样例数据导入,以方便后续学习。飞行记录数据会被存储在kibana_sample_data_flights索引中,包含了四个航线的飞行数据。Web日志数据会被存储在kibana_sample_data_logs索引中,包含了一个Web应用的访问日志。单击Kibana导航栏中的Dashboards菜单,即可看到在Dashboards中添加了两个新的仪表盘[Flights] Global Flight Dashboard和[Logs] Web Traffic,如图1-18所示。

图1-17 选择样例数据

图1-18 Dashboards列表
单击这两个仪表盘,如图1-19所示,可以看到这两组样例数据的可视化图表,它们看起来已经相当专业了。
Kibana还为样例创建了查询对象和可视化对象,它们可以在导航栏的第1、2两个按钮提供的数据发现和数据可视化功能中看到。除了这些功能,Kibana还提供了画布、监控等功能的支持,这些将在本书第9~11章中介绍。

图1-19 Dashboards