Kibana 仪表板可以很容易的在浏览器中创建出来,而且绝大多数情况下,浏览器已经足够支持你创建一个很有用很丰富的节目了。不过,当你真的需要一点小修改的时候,Kibana 也可以让你直接编辑仪表板的纲要。
注意:本节内容只针对高级用户。JSON 语法非常严格,多一个逗号,少一个大括号,都会导致你的仪表板无法加载。
我们会用上面这个仪表板作为示例。你可以导出任意的仪表板纲要,点击右上角的保存按钮,指向高级(Advanced)菜单,然后点击导出纲要(Export Schema)。示例使用的纲要文件可以在这里下载: schema.json
因为仪表板是由特别长的 JSON 文档组成的,我们只能分成一段段的内容,分别介绍每段的作用和目的。
和所有的 JSON 文档一样,都是以一个大括号开始的。
服务(services)
服务(Services)是被多个面板使用的持久化对象。目前仪表板对象附加有 2 种服务对象,不指明的话,就会自动填充成请求(query)和过滤(filter)服务了。
query
"query": {
"list": {
"0": {
"query": "play_name:\"Romeo and Juliet\"",
"alias": "",
"color": "#7EB26D",
"id": 0,
"pin": false,
"type": "lucene",
"enable": true
}
},
"ids": [
0
]
},
请求服务主要是由仪表板顶部的请求栏控制的。有两个属性:
List: 一个以数字为键的对象。每个值描述一个请求对象。请求对象的键命名一目了然,就是描述请求输入框的外观和行为的。
Ids: 一个由 ID 组成的数组。每个 ID 都对应前面 list 对象的键。 ids 数组用来保证显示时 list 的排序问题。
filter
"filter": {
"list": {
"0": {
"type": "querystring",
"query": "speaker:ROMEO",
"mandate": "must",
"active": true,
"alias": "",
"id": 0
}
},
"ids": [
0
]
}
},
过滤的行为和请求很像,不过过滤不能在面板级别选择,而是对全仪表板生效。过滤对象和请求对象一样有 list 和 ids 两个属性,各属性的行为和请求对象也一样。
垂幕(pulldown)
垂幕是一种特殊的面板。或者说,是一个特殊的可以用来放面板的地方。在垂幕里的面板就跟在行里的一样,区别就是不能设置 span 宽度。垂幕里的面板永远都是全屏宽度。此外,垂幕里的面板也不可以吧被使用者移动或编辑。所以垂幕特别适合放置输入框。垂幕的属性是一个由面板对象构成的数组。关于特定的面板,请阅读 Kibana Panels
{
"type": "query",
"collapse": false,
"notice": false,
"enable": true,
"query": "*",
"pinned": true,
"history": [
"play_name:\"Romeo and Juliet\"",
"playname:\"Romeo and Juliet\"",
"romeo"
],
"remember": 10
},
{
"type": "filtering",
"collapse": false,
"notice": true,
"enable": true
}
],
垂幕面板有 2 个普通行面板没有的选项:
Collapse: 设置为真假值,代表着面板被折叠还是展开。
Notice: 面板设置这个值,控制在垂幕的标签主题上出现一个小星星。用来通知使用者,这个面板里发生变动了。
导航(nav)
nav
属性里也有一个面板列表,只是这些面板是被用来填充在页首导航栏里德。目前唯一支持导航的面板是时间选择器(timepicker)
"nav": [
{
"type": "timepicker",
"collapse": false,
"notice": false,
"enable": true,
"status": "Stable",
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
],
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"timefield": "@timestamp"
}
],
loader
loader
属性描述了仪表板顶部的保存和加载按钮的行为。
"loader": {
"save_gist": false,
"save_elasticsearch": true,
"save_local": true,
"save_default": true,
"save_temp": true,
"save_temp_ttl_enable": true,
"save_temp_ttl": "30d",
"load_gist": false,
"load_elasticsearch": true,
"load_elasticsearch_size": 20,
"load_local": false,
"hide": false
},
行数组
rows
就是通常放置面板的地方。也是唯一可以通过浏览器页面添加的位置。
"rows": [
{
"title": "Charts",
"height": "150px",
"editable": true,
"collapse": false,
"collapsable": true,
行对象包含了一个面板列表,以及一些行的具体参数,如下所示:
collapsable: 真价值代表使用者是否可以折叠行
面板数组
行的 panels
数组属性包括有一个以自己出现次序排序的面板对象的列表。各特定面板本身的属性列表和说明,阅读 Kibana Panels
"panels": [
{
"error": false,
"span": 8,
"editable": true,
"type": "terms",
"loadingEditor": false,
"field": "speech_number",
"exclude": [],
"missing": false,
"other": false,
"size": 10,
"order": "count",
"style": {
"font-size": "10pt"
},
"donut": false,
"tilt": false,
"labels": true,
"arrangement": "horizontal",
"chart": "bar",
"counter_pos": "above",
"spyable": true,
"queries": {
"mode": "all",
"ids": [
0
]
},
"tmode": "terms",
"tstat": "total",
"valuefield": "",
"title": "Longest Speeches"
},
{
"error": false,
"span": 4,
"editable": true,
"type": "goal",
"loadingEditor": false,
"donut": true,
"tilt": false,
"legend": "none",
"labels": true,
"spyable": true,
"query": {
"goal": 111397
},
"queries": {
"mode": "all",
"ids": [
0
]
},
"title": "Percentage of Total"
}
]
}
],
索引设置
索引属性包括了 Kibana 交互的 Elasticsearch 索引的信息。
"index": {
"interval": "none",
"default": "_all",
"pattern": "[logstash-]YYYY.MM.DD",
"warm_fields": false
},
interval: none, hour, day, week, month。这个属性描述了索引所遵循的时间间隔模式。
default: 如果 interval
被设置为 none,或者后面的 failover
设置为 true
而且没有索引能匹配上正则模式的话,搜索这里设置的索引。
pattern: 如果 interval
被设置成除了 none 以外的其他值,就需要解析这里设置的模式,启用时间过滤规则,来确定请求哪些索引。
warm_fields: 是否需要解析映射表来确定字段列表。
其余
下面四个也是顶层的仪表板配置项
"failover": false,
"editable": true,
"style": "dark",
"refresh": false
}
failover: 真假值,确定在没有匹配上索引模板的时候是否使用 index.default
。
editable: 真假值,确定是否在仪表板上显示配置按钮。
style: "亮色(light)" 或者 "暗色(dark)"
refresh: 可以设置为 "false" 或者其他 elasticsearch 支持的时间表达式(比如 10s, 1m, 1h),用来描述多久触发一次面板的数据更新。
导入纲要
默认是不能导入纲要的。不过在仪表板配置屏的控制(Controls)标签里可以开启这个功能,启用 "Local file" 选项即可。然后通过仪表板右上角加载图标的高级设置,选择导入文件,就可以导入纲要了。