软件架构师,从事分布式数据库,云计算等方向研发
2 人赞同了该文章
我们生活在一个大数据的世界中,即使是小型 IT 环境也会产生大量数据。一旦组织弄清楚如何利用生成数据的各种数据源,以及收集、处理和存储数据的方法,下一步就是分析。
分析方法因用例、使用的工具以及数据本身而异,但可视化数据的步骤,无论是日志、指标还是跟踪,现在都被认为是标准的最佳实践。可视化数据有助于团队监控他们的环境、检测模式并在识别异常行为时采取行动。在诊断和事后根本原因分析的情况下,可视化数据提供了理解给定时间点发生的事情所需的可见性。
Grafana 和 Kibana 是两种流行的开源工具,可帮助用户可视化和理解大量日志数据中的趋势,在这篇文章中,我将简要介绍每种工具并重点介绍它们之间的主要区别。
Kibana
Kibana是世界上最流行的开源日志分析平台ELK Stack 中的“K” ,它为用户提供了一个工具,用于在存储在 Elasticsearch 集群中的日志数据之上探索、可视化和构建仪表板。
Kibana 的核心功能是数据查询和分析。使用各种方法,用户可以在 Elasticsearch 索引的数据中搜索其数据中的特定事件或字符串,以进行根本原因分析和诊断。基于这些查询,用户可以使用 Kibana 的可视化功能,该功能允许用户以各种不同的方式可视化数据,使用图表、表格、地理地图和其他类型的可视化。
Grafana
Grafana是一个免费的开源 (FOSS/OSS) 可视化工具,可用于各种不同的数据存储,但最常与 Graphite、InfluxDB、Prometheus 和 Elasticsearch一起使用。碰巧的是, *Grafana 一开始是 Kibana 的一个分支,试图为 Kibana(当时)没有提供太多支持的指标(也称为监控)提供支持。*
从本质上讲,Grafana 是Graphite-web 的功能丰富的替代品,可帮助用户轻松创建和编辑仪表板。它包含一个独特的 Graphite 目标解析器,可以轻松进行度量和函数编辑。由于 Grafana 使用Flot作为默认选项的快速客户端渲染(即使在很长的时间范围内),用户可以使用智能轴格式(例如线和点)创建综合图表。
1. 日志与指标(日志与监控)
两种可视化工具之间的主要区别源于它们的用途。Grafana 的设计迎合了系统 CPU、内存、磁盘和 I/O 利用率等指标的分析和可视化。平台不支持全文数据查询。另一方面,Kibana 运行在 Elasticsearch 之上,主要用于分析日志消息。
如果您正在构建一个监控系统,两者都可以很好地完成工作,尽管下面将概述一些差异。如果您想要的是日志,对于任何支持日志的用例——故障排除、取证、开发、安全,Kibana 是您唯一的选择。
未来
这两种工具的支持者都试图扩大其范围。当然可以将指标数据传送到 Kibana 并将数据记录到 Grafana。
维护 Grafana 的 Grafana Labs 发布了 Loki,这是一个解决方案,旨在补充主要工具,以便更好地解析、可视化和分析日志记录。缺点之一是 Loki 不索引日志的内容。相反,它根据与给定日志流关联的标签对它们进行分类。这可能使其适用于可以快速识别标签的场景,例如 Kubernetes pod 日志。否则,ELK Stack 仍然有 Grafana 击败。
2. 设置、安装和配置
Kibana 和 Grafana 都非常易于安装和配置。两者都支持在 Linux、Mac、Windows、Docker 上安装或从源代码构建。Kibana 支持每个操作系统的更多安装选项,但总而言之——这里没有太大区别。由于 Kibana 在 Elasticsearch 之上使用,因此需要与您的 Elasticsearch 实例连接。
Grafana 使用 .ini 文件进行配置,与 Kibana 对语法敏感的 YAML 配置文件相比,该文件相对容易处理。Grafana 还允许您使用环境变量覆盖配置选项。
3. 数据源和集成
Grafana 旨在用作分析指标的 UI。因此,它可以处理多个时间序列数据存储,包括与 Graphite、Prometheus、InfluxDB、MySQL、PostgreSQL 和 Elasticsearch 的内置集成,以及使用插件的其他数据源。对于每个数据源,Grafana 都有一个特定的查询编辑器,该编辑器针对该数据源中包含的特性和功能进行了自定义。另一方面,Kibana 旨在仅与 Elasticsearch 一起使用,因此不支持任何其他类型的数据源。
Kibana在另一方面,被设计工作只与Elasticsearch并因此不支持任何其他类型的数据源。为了从其他来源推断数据,需要将其传送到 ELK 堆栈(通过 Filebeat 或 Metricbeat,然后是 Logstash,然后是 Elasticsearch),以便将 Kibana 应用于它。
以下教程展示了如何通过 Logstash将MongoDB 数据迁移到 Kibana,然后最终迁移到我们的托管 ELK Stack 解决方案。原理类似于非托管开源场景。有关将 Filebeat 添加到混合中的信息,请查看此Filebeat 教程;要使用 Metricbeat 进行监控,请查看此Metricbeat 教程。
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 和 Kibana 都提供了许多自定义选项,允许用户以他们想要的任何方式切片和切块数据。用户可以使用面板颜色、标签、X 轴和 Y 轴、面板大小等等。总而言之,Grafana 拥有更广泛的自定义选项,并且还可以通过面板编辑器和可折叠行更轻松地更改不同的设置。
7. 警报
Kibana 和 Grafana 之间的一个主要区别是警报。从 4.x 版开始,Grafana 附带了一个内置警报引擎,允许用户将条件规则附加到仪表板面板,从而触发警报到您选择的通知端点(例如电子邮件、Slack、PagerDuty、自定义 webhook)。Kibana 没有开箱即用的警报功能。要向 Kibana 用户添加警报,可以选择托管 ELK 堆栈(例如 http://Logz.io)、实施 ElastAlert 或使用 X-Pack。
8. 社区
这两种开源工具都有一个强大的用户社区和活跃的贡献者。但是在 GitHub 上查看这两个项目时,Kibana 似乎具有优势。Grafana有大约 14,000 次代码提交,而 Kibana 有超过 17,000 次。这两个项目都非常活跃,但仔细观察提交频率会反映出 Kibana 的某种优势。
随着时间的推移,Grafana 承诺:
Kibana 随着时间的推移提交:
在受欢迎程度方面,我们可以看看谷歌趋势来得到一个指示。同样,Kibana 似乎在2020 年之前占据优势。但由于多种原因,Grafana 的受欢迎程度已经超过 Kibana。随着 Kibana 许可证的变化导致不同公司和项目的政策变化,这种差距可能会扩大。
Grafana 和 Kibana 串联
Kibana 和 Grafana 都是强大的可视化工具。但是,就其核心而言,它们都用于不同的数据类型和用例。Grafana 与时序数据库(例如 Graphite 或 InfluxDB)一起用于指标分析;另一方面。Kibana 是流行的 ELK Stack 的一部分,用于探索日志数据。
这两个平台都是不错的选择,有时甚至可以相互补充。如上所述,大量组织将使用这两种工具作为其整体监控堆栈的一部分。在 http://Logz.io