我们生活在一个大数据的世界中,即使是一个小型的IT环境也会产生大量数据。一旦组织弄清楚了生成数据的各种数据源,以及收集,处理和存储数据的方法,下一步工作的重点就是分析。
分析方法会根据用例、使用的工具以及数据本身而有所不同,但是可视化数据的步骤,无论是日志,度量标准还是跟踪,现在都被视为标准的最佳实践。可视化数据可帮助团队监控其环境,检测模式并在识别异常行为时采取措施。在诊断和事后分析原因的情况下,可视化数据提供了理解在给定时间点发生的事情所需的可见性。
Kibana和Grafana是两种流行的开源工具,可以帮助用户可视化和理解大量日志数据中的趋势。在这篇文章中,我将简要介绍每种工具并突出显示它们之间的主要区别。
Kibana
Kibana是世界上最受欢迎的开源日志分析平台ELK Stack中的“K” ,它为用户提供了一个工具,用于在存储于Elasticsearch集群中的日志数据进行检索,可视化和构建仪表板。
Kibana的核心功能是数据查询和分析。使用各种方法,用户可以搜索Elasticsearch中索引的数据,以查找其数据中的特定事件或字符串,以进行根本原因分析和诊断。基于这些查询,用户可以使用Kibana的可视化功能,允许用户使用图表,表格,地理图和其他类型的可视化以各种不同的方式可视化数据。
Grafana
Grafana是一个开源可视化工具,可以在各种不同的数据存储上使用,但最常用的是Graphite,InfluxDB,以及Elasticsearch等.
从本质上讲,它是Graphite-web的一个功能丰富的替代品,可帮助用户轻松创建和编辑仪表板。它包含一个独特的Graphite目标解析器,可以轻松进行度量和功能编辑。用户可以使用智能轴格式(例如线条和点)创建全面的图表,这是Grafana快速的客户端渲染(即使在很长的时间范围内) - 使用Flot作为默认选项。
1.日志与指标
两个可视化工具之间的关键区别源于它们的目的。Grafana旨在分析和可视化系统CPU,内存,磁盘和I / O利用率等指标。Grafana不允许全文数据查询。另一方面,Kibana运行在Elasticsearch之上,主要用于分析日志消息。
如果您正在构建一个监控系统,两者都可以很好地完成工作,尽管下面还将介绍一些差异。如果目标分析是您的日志,对于任何记录支持的用例 - 故障排除,取证,开发,安全性,Kibana是您唯一的选择。
2.安装和配置
Kibana和Grafana都非常易于安装和配置。两者都支持在Linux,Mac,Windows,Docker上安装或从源代码构建。Kibana支持在每个操作系统中更广泛的安装选项,但总而言之 - 这里没有太大的区别。由于Kibana在Elasticsearch之上使用,因此需要与Elasticsearch实例建立连接。
使用.ini文件配置Grafana,与Kibana的语法敏感的YAML配置文件相比,它更容易处理。Grafana还允许您使用环境变量覆盖配置选项。
3.数据源和集成
Grafana旨在用作分析指标的UI。因此,它可以与多个时间序列数据存储一起使用,包括与Graphite,Prometheus,InfluxDB,MySQL,PostgreSQL和Elasticsearch的内置集成,以及使用插件的其他数据源。对于每个数据源,Grafana都有一个特定的查询编辑器,该编辑器针对该数据源中包含的特性和功能进行了自定义。另一方面,Kibana仅适用于Elasticsearch,因此不支持任何其他类型的数据源。
4.访问控制和身份验证
默认情况下,除非您使用X-Pack(商业捆绑的ELK附加组件,包括用于访问控制和身份验证)或开源解决方案(如SearchGuard),否则您的Kibana仪表板是公开的,可供公众访问。相比之下,Grafana提供内置的用户控制和身份验证机制,允许您限制和控制对仪表板的访问,包括使用外部SQL或LDAP服务器。此外,Grafana的API可用于保存特定仪表板,创建用户和更新数据源等任务。您还可以创建特定的API密钥并将其分配给特定的角色。
5.查询
查询和搜索日志是Kibana更强大的功能之一。使用Lucene语法,Elasticsearch Query DSL或实验Kuery,可以按照时间顺序在主日志显示区域中显示结果,搜索存储在Elasticsearch索引中的数据。Lucene是一种非常强大的查询语言,但不直观,涉及一定的学习曲线。
使用Grafana,用户可以使用查询编辑器进行查询。每个数据源都有一个针对特定数据源定制的不同查询编辑器,这意味着所使用的语法根据数据源而有所不同。例如,Graphite查询将与Prometheus查询不同。
6.仪表板和可视化
Kibana和Grafana都拥有强大的可视化功能。Kibana提供丰富的可视化类型,允许您创建饼图,折线图,数据表,单度量可视化,地理图,时间序列和降价可视化,并将所有这些组合到仪表板中。Kibana中的仪表板非常动态且功能多样 - 可以即时过滤数据,并且可以轻松编辑仪表板并以整页格式打开。Kibana附带了各种数据集的默认仪表板,以便于设置时间。
Grafana仪表板使Grafana成为一种流行的可视化工具。它们因其完全多才多艺而闻名。Grafana中的可视化称为面板,用户可以创建包含不同数据源面板的仪表板。Grafana支持graph,singlestat,table,heatmap和freetext面板类型。Grafana用户可以利用针对不同数据类型和来源的大型现成仪表板生态系统。
Grafana和Kibana都提供了许多自定义选项,允许用户以他们想要的任何方式切片和切块数据。用户可以使用面板颜色,标签,X和Y轴,面板尺寸等等。总而言之,Grafana拥有更广泛的自定义选项,并且还可以使用面板编辑器和可折叠行更轻松地更改不同的设置。
7.警报
Kibana和Grafana之间的一个关键区别是警报。从版本4.x开始,Grafana附带内置警报引擎,允许用户将条件规则附加到仪表板面板,从而导致触发警报到您选择的通知端点(例如,电子邮件,Slack,PagerDuty,自定义的webhooks)。Kibana没有开箱即用的警报功能。要想向Kibana用户添加警报,可以选择托管的ELK堆栈,实施ElastAlert或使用X-Pack。
8.社区
这两个开源工具都拥有强大的用户社区和活跃的贡献者。但是当看到GitHub上的两个项目时,Kibana似乎有优势。Grafana有大约14,000个代码提交,而Kibana有超过17,000个。这两个项目都非常活跃,但仔细研究提交的频率反映了Kibana的一定优势。
Grafana的提交情况:
Kibana的提交情况:
在受欢迎程度方面,我们可以看看谷歌趋势,以获得指示。Kibana似乎也有优势:
总结
Kibana和Grafana都是强大的可视化工具。但是,它们的核心是用于不同的数据类型和用例。Grafana与时间序列数据库(如Graphite或InfluxDB)是用于度量分析的组合,而Kibana是流行的ELK Stack的一部分,用于探索日志数据。
这两个平台都是不错的选择,有时甚至可以相互补充。如上所述,大量组织将使用这两种工具作为其整体监控堆栈的一部分。