Kibana可视化设置
加载数据
在你开始之前:加载案例数据
本段教程依赖如下数据集:
-
莎士比亚的所有著作,合适地解析成了各个字段:shakespeare.json。
-
随机生成的虚构账号数据:accounts.json
-
随机生成的日志文件:logs.jsonl
认识数据
数据格式
莎士比亚数据集由如下数据格式组织
{
"line_id": INT,
"play_name": "String",
"speech_number": INT,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
账户数据集由如下数据格式组织
{
"account_number": INT,
"balance": INT,
"firstname": "String",
"lastname": "String",
"age": INT,
"gender": "M or F",
"address": "String",
"employer": "String",
"email": "String",
"city": "String",
"state": "String"
}
日志数据有几十个不同的字段,但是在教程中关注的字段如下:
{
"memory": INT,
"geo.coordinates": "geo_point"
"@timestamp": "date"
}
在导入莎士比亚数据集之前,我们需要为各个字段建立一个映射。映射把索引里的文档划分成逻辑组,指明字段的特征,如字段是否可被搜索、是否被标记、是否能被拆分成多个文字等。
mapping映射
使用以下命令为莎士比亚数据集建立一个映射。
PUT /shakespeare
{
"mappings": {
"doc": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}
}
这个映射指明了数据集的如下特征:
-
speaker字段是一个字符串,并且不被分析。这个字段的字符串被视为一个单元,即时字段值有多个文字。
-
play_name同样符合上述特征。
-
line_id和speech_number是一个整数。
日志数据需要一个映射表明地理位置的经纬度,通过在那些字段使用一个geo_point类型。
使用以下命令为日志数据建立一个geo_point映射。
PUT /logstash-2015.05.18
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.19
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
PUT /logstash-2015.05.20
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
那些账号数据不需要任何映射,所以这个时候我们使用Elasticsearch的批量导入API输入数据,使用如下命令:
导入数据
curl -H 'Content-Type: application/x-ndjson' -XPOST 'node1:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'node2:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'node3:9200/_bulk?pretty' --data-binary @logs.jsonl
这些命令将会花费一段时间来执行,视可利用计算资源而定。
查看索引
使用如下命令验证成功导入:
GET /_cat/indices?v
定义你的索引模式匹配
每一个数据集导入到Elasticsearch后会有一个索引匹配模式,在上段内容莎士比亚数据集有一个索引名称为shakespeare,账户数据集的索引名称为bank。一个索引匹配模式就是一个字符串包含可选的通配符,它能匹配多个索引。比如,在常用的日志案例中,一个典型的索引名称包含MM-DD-YYYY格式的日期,因此一个5月的索引匹配模式可能是这样:logstash-2015.05*。
发现你的数据
点击Discover页面展示Kibana的数据发现功能。
在标签页面的正下方,有一个查询框用于搜索你的数据。搜索需要一个特定的查询语法,它们能让你创建自己的搜索,点击查询框右边的按钮能保存这些搜索。在查询框的下方,当前的索引匹配模式显示在一个下拉选中,选择下拉选以改变匹配模式。你能用字段名和你感兴趣的值构建一个搜索,数字类型的数据可使用比较操作符比如>、<、=等,你可使用AND、OR、 NOT逻辑符连接元素,必须是大写。
试着选择ba*模式匹配,然后把下面的查询放到查询框
account_number:<100 AND balance:>47500
搜索返回所有账户号码0到99且薪水超过4,7500的账户。如果你使用相关的案例数据,将会返回5条数据:账户号码8,32,78,85和97。
为了窄化显示某些感兴趣的字段,高亮索引模式匹配下面的列表中的字段,然后点击Add按钮。在这个例子中,注意怎么实现的,添加一个account_number字段后改变界面显示从5条记录的完整文本到一个只有账户号码的简单列表。
数据可视化
Visualize页面的可视化工具能使你用好几种不同的方式展示你数据集的很多方面。
制作饼图
点击Visualize页面开始
点击Pie chart,然后点击from a new search,选择ba*索引匹配模式。
可视化依赖Elasticsearch聚合的两种类型:量聚合和刻度聚合。量聚合根据你指定的标准整理数据,比如,在我们的账户数据集中,我们可以建立一个账户薪水的范围,然后显示落在每个薪水范围的总比率。界面显示出一个完整的饼,因为我们现在还没有指定任何量值。
在Select buckets type下拉列表中,选择Split Slices,然后在Aggregation下拉列表中选择Range选项,在字段下拉列表中选择balance字段,点击Add Range按钮4次把区间增加到6个,输入一下区间。
0 999
1000 2999
3000 6999
7000 14999
15000 30999
31000 50000
点击应用按钮显示图表。
图表显示出这1000个账户落在不同薪水范围的比率。为了看数据的另一个维度,我们要添加另一个量聚合。我们可以更进一步地把每个区间依据薪水所有者的年龄拆分。在下面点击Add sub-buckets,然后点击Split Slice,在下拉选中选择Terms选项和age字段,点击绿色Apply changes按钮在新的结果中增加一个外环。
通过点击搜索字段的右边的按钮保存图表,把这个图表命名为Pie Example。
制作柱状图
下一步,我们打算制作一个条形图。点击New Visualization按钮,然后点击Vertical bar chart。选择From a new search,然后选定shakes*模式匹配。你将会看到单个大条形图,因为到现在为止我们还没有定义任何量值。
对于Y轴的刻度聚合,选择speaker作为Unique Count的字段。对于莎士比亚戏剧,知道那部戏剧需要最少数量的台前幕后人员可能是很有用的,如果你的戏剧公司短缺演员的话。对于X轴的量值,选择Terms聚合和play_name字段。对于排序,选择Ascending,Size保持默认值5。让其他参数保持默认值,然后点击Apply cganges按钮,你的图表应该看起来像下面那样。
注意一下每部剧名是怎么显示成一个完整的词组而不是被拆分成单独的单词。这是我们在教程的前段部分设置映射的结果,我们把play_name标记为 not analyzed。鼠标移到每一个条上以tooltip形式显示每个剧台前幕后的数量。你可以关掉这个显示方式或者改变你图表的其他选项通过点击左上方的Option标签。
保存图表的名称为Bar Example。
地图
接下来,我们要制作一个瓦片地图来可视化一些地理数据。点击New Visualization按钮,然后点击Tile map按钮,选择from a new search和logstash-*模式匹配。在Kinaba界面的右上方的时间选择器为我们的要发掘的数据定义一个时间窗口,点击Absolute按钮,然后设置起始时间为2015-5-18结束时间到2015-5-20。
markdown
最后我们用一些标记小部件来展示我们的仪表盘。点击New Visualization按钮然后点击Markdown widget按钮来显示一个非常简单的标记字段输入框:
点击Apply changes按钮
# This is a tutorial dashboard!
The Markdown widget uses **markdown** syntax.
> Blockquotes in Markdown use the > character.
在预览面板显示出渲染出来的标记效果。 用Markdown Example名称保存这个图表。
仪表盘
一个Kibana仪表盘是许多图表的集合允许你整理和分享。点击Dashboard页面以开始,点击搜索框最右边的Add Visualization按钮,显示出已保存图表的列表。选择Markdown Example、Pie Example、Bar Example和Map Example,然后点击底部小小的箭头关闭列表。你可以通过点集合拖拽标题条移动各个图表的容器,通过拖拽图表容器右下角调整容器大小。你的样例仪表盘最终看起来差不多是这样:
请关注微信公众号: