纵观任何一家大数据平台的技术架构,总少不了ElasticSearch;ES作为溶合了后端存储、快速检索、OLAP分析等功能的一套开源组件,更绝的是提供了一套集数据采集与前端展现为一体的框架(即ELK), 在我们的应用过程中,与ES集成的前端框架包含有Kibana、Grafana等系统,实际应用过程中,以Kibana框架为例,从系统易用性方面进行了一些定制扩展,具体扩展功能总结如下:

1、Kibana框架汉化


  • kibana 没有支持多语言的语言包,在正式系统使用时,需要汉化,如下图:

2、身份及数据权限集成


  • 我们的大数据平台里面,使用了多种开源的前端框架来满足不同的应用,通过扩展开发一套通用的组件来实现各种开源框架与大数据平台的集成,包含与大数据平台系统的身份集成、数据权限集成、路由均衡等功能,示意图如下:
  • 框架集成后示意效果图如下:

2、高级过滤扩展


  • Kibana原生提供的搜索方式在需要多条件组合精确查询的情况下,比较难用,并且需要使用者对Query语法非常熟悉,提高了使用门槛,为了解决此问题,我们扩展了公共的高级过滤组件与Kibana集成(5.6以后的Kibana也带着了过滤,但使用起来还是不方便),如下图:

主要特性如下:

  • 支持索引上的任何字段进行匹配检索条件定义
  • 根据索引字段类型不同,可选择的比较符不一样,例如:数字类型支持 >、>=、=、<、<= 等, 对于Text 或 KeyWord 类型支持:等于、包含操作。
  • 支持 与、或、非的条件定义组合(有点太专业、有更好的名字建议没?)。
  • 当索引上的字段过多,选择字段名比较麻烦,因此支持智能定位选择,如上图。
  • 定义条件的过程中,比较值支持手工输入、智能帮助(如:如果字段是日期类型,比较值支持弹出日期选择。如果字段是关联类型,比如:城市,比较值支持配置弹出帮助选择等)
  • 支持新增、复制条件组合、删除、禁用某行定义的条件。

定义好过滤条件,在使用的过程中,当前组合的查询条件会以标签的形式展现在列表顶端,如下图红框:

  • 为了方便在使用的过程中快速禁用或删除组合条件的某一项,支持在标签上直接删除或禁用该条件,如下图:当mouse悬浮在标签上时,用户可选择禁用或删除操作。

3、查询方案


扩展后的方案按索引进行拆分(即只显示该索引下的方案),分为公共方案(开发人员预制)与私有方案(运行时、用户调整查询格式及查询条件后保存的方案),如下图:

  • 公用方案不允许修改或编辑,在与我们的框架集成后,用户运行时在公用方案基础上调整后的保存的方案自动会保存至私有方案分类,允许当前用户删除自己保存的方案,如下图:

每套方案里面包含的内容

  • 查询条件、时间范围
  • 显示的数据列、每页数据条数、列顺序、表头是否固定等配置。

4、页面显示数据条数


  • 将每页显示数据条数暴露在前端页面,允许用户在查询时修改当前页面展现数据量大小
  • 后端配置界面进行扩展,允许开发人员配置条数枚举项,如下图:
  • 运行效果:
  • 注意:ES 索引 在查询时默认返回最大的数据条数是10000,如上图,当设置每页的条数超过10000时,需要修改ES索引的最大返回数据条数参数。

5、数据导出


  • 主要是将查询结果导出为Excel文件,扩展的导出功能包含前端导出和后台导出两类。
  • 前端导出:指快速导出当前页面显示的内容(一般指10000以内的小数据量)、后端导出指根据当前页面设置的条件、列显示顺序从后端将满足条件的数据导出为Excel(适用于超出 10000条大数据量导出),如下图:

6、时序图隐藏与显示


  • Kibana在运行时显示的时候,默认在顶部带着按时序的柱状统计图, 在有些场景的列表查询中,并不需要这块图形的显示,通过扩展,可以在后台配置,如下图:
  • 运行效果:见上面的一些图,都是没带着柱状统计图的。

7、菜单自定义配置


  • 右上角的菜单允许用户自定义进行配置,如下图:
  • 运行效果:
  • 统计分析菜单说明:将该索引定义的Visualize方案通过配置的方式挂在统计分析菜单下,实现列表与图表结合更直观探索数据价值。

8、列选择智能检索


  • 当索引的列达到几十甚至上百个列时,如下图,在设置显示列时查找非常不方便,扩展一种快速检索选择的方法

9、显示列中文别名设置


  • 扩展允许配置列显示别名,如下图:

10、数据权限控制


  • 数据权限:指不同的用户能看到的数据范围不一样,这里主要指与各自业务系统的权限集成。

11、表头固定


  • 扩展通过设置如图红框内的锁图标,设置滚动翻页查看数据时,表头标题行是否固定。

12、变量解析


  • 设置列联查,在联查的地址中需要获取当前行数据的其它字段作为联查地址的参数,扩展如下图参数定义及解析
  • 运行效果:

在扩展完善的过程中,后续会持续更新该文档,有了这些扩展的功能点,再开发一套报表是不是零编码的秒开呢?

ELK实践-Kibana定制化扩展的更多相关文章

  1. 网易云基于 Kubernetes 的深度定制化实践

    本文由  网易云发布. 2017 年,Kubernetes 超越 Mesos 和 Docker Swarm成为最受欢迎的容器编排技术.网易云从 2015 下半年开始向 Kubernetes 社区贡献代 ...

  2. Oceanus:美团HTTP流量定制化路由的实践

    背景简述 Oceanus是美团基础架构部研发的统一HTTP服务治理框架,基于Nginx和ngx_lua扩展,主要提供服务注册与发现.动态负载均衡.可视化管理.定制化路由.安全反扒.session ID ...

  3. AI应用开发实战 - 定制化视觉服务的使用

    AI应用开发实战 - 定制化视觉服务的使用 本篇教程的目标是学会使用定制化视觉服务,并能在UWP应用中集成定制化视觉服务模型. 前一篇:AI应用开发实战 - 手写识别应用入门 建议和反馈,请发送到 h ...

  4. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  5. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  6. 定制化Azure站点Java运行环境(1)

    Azure website提供了为现代化的web应用程序快速部署的PAAS平台,可以让用户几分钟之内快速的将自己的应用部署到云端,并且提供了自动扩展(auto-scaling),SSL,多种语言(Ja ...

  7. 利用 ELK 搭建 Docker 容器化应用日志中心

    利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...

  8. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  9. 大雄的elk实践

    目录 一.ElK环境搭建 1.1.elasticsearch 1..kibana 1..logstash二.elk实践 2.1 使用elk分析nginx日志 一.ElK环境搭建   1.1 elast ...

随机推荐

  1. ie9上传后下载json

    1.保持后台控制器返回的数据为字符串格式 2.js:dataType类型保持为html格式 dataType: 'html',//默认就是html类型,不写对火狐有影响 3.将上传后后台返回的字符串转 ...

  2. Qt终结者之粒子系统

    前言 粒子系统用于模拟一些特定的模糊效果,如爆炸.烟火.雪花.水流等.使用传统的渲染技术实现粒子效果比较困难,但是使用QML粒子系统能十分方便的实现各种粒子效果,使你的界面更加炫酷,动感. QML中的 ...

  3. Linux常用命令之Yum

    Linux Yum命令详解Yum全称Yellow dog Updater,Modified,是一个在Fedora和RedHat以及SUSE中提供的基于RPM包的软件包管理工具,能够从指定的服务器自动下 ...

  4. HTML语言发展史

    .发展时间线 1982年,Tim Berners-Lee 建立 HTML 1993年,大學生的 Marc Andreessen 在他的 Mosaic 浏览器加入 标记,从此可以在Web頁面上浏览图片 ...

  5. [转载] Fiddler为所欲为第三篇 封包逆向必备知识[三]

    导语: 小A同学:会抓包有什么好学习的,不就用一个工具设置个wifi代{过}{滤}理就OK了嘛,还不是很多做不了.不如学习安卓逆向.didi科学家:不好意思,抓包可以为所欲为. 其实学习抓包,完完全全 ...

  6. ios 传递JSON串过去 前面多了个等号

    先说下我的问题 后台让我这边把请求的参数弄成一个实体转化成 json 串放body里传给他,当然header也有设置,提前设置好了, 但是后来了解 所谓的把实体转成json串的本质就是先把实体用run ...

  7. 在Java中用 . 深层访问JSON数据

    本文介绍Java中解析JSON的一种方法,可以让我们在Java程序中也用x.x.x的形式访问JSON数据中的值. 代码大部分来源非本人,本人在源代码基础上加以修改以使正常运行. 代码: // 将提取方 ...

  8. Django models 的字段类型

    1.models.AutoField   ---自增列 = int(11)    如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_k ...

  9. java数组的for遍历

    class ArrayDome { public static void main(String[] args) { int[] arr = {12,51,12,11}; //顺序遍历 for(int ...

  10. Windows下Redis安装过程

    1.去github下载Redis-x64-2.8.2402.zip压缩包 2.将压缩包解压到你要安装的目录下 3.将redis设置为开机自启动服务 redis-server --service-ins ...