- 背景
- 一、不支持多租户
- 二、Visualize不能定制化
- 三、从Visualize里过滤出的数据无法直接查看或导出
- 四、Visualize/Dashboard不能进行批量增删改查
- 五、跨行分析不方便
- 六、无法Join
- 七、不能自动刷新index
- 八、基于Kibana的二次开发很不方便
背景
Kibana在 ELK 套装里,负责数据搜索、数据分析、数据可视化等基本功能。以下总结了使用Kibana过程中遇到的一些问题。
当然,有些功能是elastic公司为了收费,在X-Pack里实现了,但并不妨碍我们吐槽它。
一、不支持多租户
- 数据安全性不高:所有人都可以登录,也可以查看所有的数据。
- 所有的图表都是共享的
解决办法一
数据分集群隔离。既然同一个ELK集群做不到多租户,那就采用多ELK集群的办法隔离
解决办法二
searchguard
该产品可以很好的和 ELK 集成,并提供安全相关的一系列组件。
其中,对用户进行index级别的读、写等权限管理,是SearchGuard的免费功能,其他类似打通LDAP,Kerberos认证,日志审计,REST API管理等功能,依然是收费的。详情见 https://floragunn.com/searchguard-license-support/
二、Visualize不能定制化
Kibana的Visualize支持多达11种不同种类的图表,可以覆盖绝大部分的日常使用。但是依然只是预先定义的模板,不能自己定制。
例如饼图,鼠标放在饼图的每个块上可以展示相关信息,但是无法直接显示所有块的信息。类似这样:
或这样:
三、从Visualize里过滤出的数据无法直接查看或导出
Visualize里展示的数据是聚合之后的数据。除了直接查看图形化的数据,还可以点击左下角的图标,进而展示 “Table”,“Request”,“Response”,“Statistics”。
但是如果想查看未聚合的数据,就需要根据该Visualize的过滤条件,在Discover页面里搜索,不太方便。
四、Visualize/Dashboard不能进行批量增删改查
例如,一般公司的产品都会区分正式线、预发线,那么一模一样的Visualize,Dashboard就需要建两遍;
又或者,公司拥有多个客户,需要给每个客户都建立类似的Dashboard,也无法批量进行。
注:Kibana里可以保存这些Visualize/Dashboard,可以导出 json 文件,但是导出的只是现有的图表大盘的UUID,而不是定义,无法进行修改,如下:
[
{
"_id": "c9fb5840-51c1-11e7-9ebc-39c0d13a1ac6",
"_type": "dashboard",
"_source": {
"title": "xxx",
"hits": 0,
"description": "",
"panelsJSON": "[{\"col\":1,\"id\":\"a24c3210-51c1-11e7-9ebc-39c0d13a1ac6\",\"panelIndex\":1,\"row\":1,\"size_x\":12,\"size_y\":2,\"type\":\"visualization\"},{\"size_x\":12,\"size_y\":2,\"panelIndex\":2,\"type\":\"visualization\",\"id\":\"54792420-51c2-11e7-9ebc-39c0d13a1ac6\",\"col\":1,\"row\":3}]",
"optionsJSON": "{\"darkTheme\":false}",
"uiStateJSON": "{}",
"version": 1,
"timeRestore": true,
"timeTo": "now",
"timeFrom": "now-20m",
"refreshInterval": {
"display": "5 seconds",
"pause": true,
"section": 1,
"value": 5000
},
"kibanaSavedObjectMeta": {
"searchSourceJSON": "{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"
}
}
}
]
20181205更新
这里光导出一个 Dashboard是不行的,但是可以顺带把 Visualization、Index Pattern 全部导出,就可以了。
- 解决了多处环境的问题(一个 export.json 可以用到多个地方)
- 不能解决编辑的问题,比如给多个客户展示相近的图表
五、跨行分析不方便
Elasticsearch里的 document的概念对应的是 logstash解析出来的一行,因此跨行分析不行。
注:
- 改善办法:
- 在日志里增加唯一标识:可以在搜索的时候通过这个唯一标识把不同的行同时搜出来进行分析
- 在某一行里打印所有的信息:虽然会有信息冗余,但至少可以在这一行里拿到所有需要的信息
- Timelion:
Timelion本是Kibana的一个插件,后来被合并到Kibana的代码库里,作为默认组件,它可以很好的折叠时间,进行同比或环比的操作,算是一种另类的跨行分析
六、 无法Join
除了上述的无法跨行分析,也没办法join,那么就只能在原始日志中多打印一些元数据了。
七、不能自动刷新index
修改logstash的解析配置,会更新进入Elasticsearch的字段,而在Kibana里需要手动刷新 Index Pattern 才能使得Discover里展示的字段更新。
八、基于Kibana的二次开发很不方便
总结
已上是对Kibana免费版的一些吐槽,至于监控、报警、报表等功能也被做进X-Pack里需要付费,就不再一一说明了。
欢迎大家给出各自的意见与建议。