Prometheus vs Grafana vs Graphite特征比较

in 互联网技术 with 0 comment  访问: 6,096 次

15349414612227.jpg

什么是"时间序列"在现代监控中如何使用?

时间序列用于现代监控,作为表示随时间收集的度量数据的方式。这样,现代性能指标可以以智能和有用的方式存储和显示,帮助我们监控我们的服务器和服务。
15349417567828.jpg
许多解决方案(包括开源和私有专利的)已经在度量存储库及其可视化引擎中使用时间序列。最后一张图片来自Zabbix,它将所有时间序列数据存储在一个公共数据库中,然后将它们显示为时间度量图。其他例子包括古老的MRTG和Cacti。但在更现代化的基础架构中,尤其是AWS或OpenStack等云计算基础架构中,使用了更强大且可配置的解决方案。

在本文中,我们将比较三种最常用的替代品(Grafana,Graphite和Prometheus),以确定它们的优点和缺点。我们将使用以下参数作为所有三个选项之间的一般比较点:

可视化和仪表板编辑:
这是您设计和构建指标/时间序列图并在仪表板中组织它们的部分。监控视图的中心在这里:

获胜者是: Grafana在这里大获全胜,而Prometheus则获得第二名。
15349424320911.jpg

存储:
可视化是任务的一部分,但我们无法凭空想象时间序列。我们需要从源获取它们,并且此源需要以某种方式存储所有时间序列并提供查询它们的方法:

获胜者是:Prometheus在这方面表现出色,Graphite名列第二,Grafana则是绝对的失败者。

数据采集​​:
好的,您既有存储又可视化,但是,您需要从服务中获取数据。这是直接监控进入现场的地方。通过使用旧方法(SNMP)或新方法(agents),您需要一种方法来获取最终将存储为时间序列的度量标准:

获胜者是:Prometheus再次获胜,而Graphite和Grafana都输掉了这场比赛。
15349457341752.jpg

插件体系架构和可扩展性:
所有现代软件解决方案中最强大的一点是通过使用插件或其他类似方法进行扩展的能力。这样,您可以扩展已有的核心功能,并在解决方案中包含一组全新的功能:

获胜者是:所有人,真的。Grafana可能是具有扩展其核心功能的真正插件的那个,但是有很多工具以这种或那种方式兼容Graphite和Prometheus。

报警和事件跟踪:
监控解决方案尚未完成,除非您在任何指标开始变得有趣时包含一种生成警报的方法。此外,事件跟踪是关联重复事件的好方法,可以帮助您更好地诊断基础架构中的问题:

获胜者是: Prometheus一路走来获胜。Graphite位居第二,Grafana甚至没有达到终点线。
15349502023399.jpg

云监控兼容性:
像AWS和OpenStack这样的云包括他们自己的监控基础架构,它收集和存储时间序列,在某些情况下,还提供基本的图形和仪表板编辑功能。我们不想在本文的这一部分中详细介绍,因此我们将使用AWS和使用OpenStack的私有云来讨论公共云。

AWS监控服务称为Cloudwatch,它不仅包括所有基于时间序列的指标的数据存储,还包括基本图表和仪表板编辑。

OpenStack(特别是在其最新版本中)包括Gnocchi,它是一种“时间序列即服务”解决方案,但尚未包含直接图形和编辑组件。让我们看看我们的三个竞争者如何将自己与AWS和OpenStack集成。

获胜者是: Grafana是真正的赢家,其他竞争者并列第二名。理想情况下,您应该坚持使用云中已有的监控产品,并且只在需要时进行补充。这就是为什么Grafana是这里最好的选择。Cloudwatch和Gnocchi已经涵盖了时间序列收集和存储。

开源 VS 企业

在许多开源项目中,通常的做法是包括某种企业/商业产品,其中包括额外的果汁。让我们回顾三个竞争者可以提供的额外内容:

获胜者是: Grafana因其提供托管选项而被宣布为获胜者。但是,如果您认为所有选项在其开源产品中都是功能完备的,那么所有选项都将首先到达终点。

最后的结论:所有这一切都没问题,但现在我很困惑。对我来说什么是正确的解决方案?

阅读本文后,您可能会头痛得厉害。别担心; 我们现在要减轻它。

AWS和OpenStack等云服务: 如果您的基础架构完全基于云,并且您已经拥有Cloudwatch或Gnocchi等选项的可用指标,请不要过多考虑:选择Grafana。您不需要存储时间序列(这已经是云的一部分)或定义警报(同样,这是AWS和OpenStack上可用的另一个功能)。您需要的是克服从Cloudwatch和Gnocchi继承的图形限制,并以智能,可用和功能丰富的方式显示您的指标。这是Grafana优于所有其他选择的地方。

具有基本数据收集解决方案的经典基础架构: 如果您的基础架构使用诸如collectd,statd或其他类似的仅数据收集工具之类的东西,并且只要Graphite可以使用它们,那么使用Graphite来执行时间序列存储部分在中央服务器中,将Grafana添加到您的组合中,以便以适当的方式显示这些指标。请注意,Graphite可以进行事件跟踪,但这与警报生成不同,因此您需要其他东西来执行此任务。

没有任何监控的任何基础架构: 如果您从头开始,并且没有其他可用的监控选项(或者您不想使用Cloudwatch或Gnocchi等基于云的系统),那么请使用Prometheus。最初,您可以添加Grafana以简化图表和仪表板编辑,直到您完全熟练使用Prometheus控制台模板。

我们的最后一条建议很简单: 为正确的方案调整合适的工具。明确地确定您的优先事项,并与您手头的内容保持平衡。如果你真正需要的是降落在月球上,不要试图到达银河系的中心,但如果当前的情况发展并且需要根据基础设施监控需求改进监控堆栈,请准备好进一步。

英文原文: http://suo.im/57mzIf

WeZan