Prometheus vs Grafana vs Graphit
2022-03-30 本文已影响0人
tracy_668
什么是"时间序列"在现代监控中如何使用?
时间序列用于现代监控,作为表示随时间收集的度量数据的方式。这样,现代性能指标可以以智能和有用的方式存储和显示,帮助我们监控我们的服务器和服务。
image.png许多解决方案(包括开源和私有专利的)已经在度量存储库及其可视化引擎中使用时间序列。最后一张图片来自Zabbix,它将所有时间序列数据存储在一个公共数据库中,然后将它们显示为时间度量图。其他例子包括古老的MRTG和Cacti。但在更现代化的基础架构中,尤其是AWS或OpenStack等云计算基础架构中,使用了更强大且可配置的解决方案。
在本文中,我们将比较三种最常用的替代品(Grafana,Graphite和Prometheus),以确定它们的优点和缺点。我们将使用以下参数作为所有三个选项之间的一般比较点:
- 可视化和仪表板编辑
- 存储
- 数据采集
- 插件体系架构和可扩展性
可视化和仪表板编辑:
这是您设计和构建指标/时间序列图并在仪表板中组织它们的部分。监控视图的中心在这里:
- Grafana:在可视化和仪表板创建和定制方面,Grafana是最好的选择。它功能丰富,易于使用,而且非常灵活。
- Graphite:良好的可视化选项,但其核心功能中不包含仪表板编辑。在现实世界中,Graphite与Grafana结合使用; Graphite进行数据存储,而Grafana进行可视化。
- Prometheus:非常好,但通常很难使用图形和仪表板编辑功能。Prometheus利用控制台模板进行可视化和仪表板编辑,但这些控制台模板的学习曲线起初可能很难。在现实世界中,我的建议是首先使用Grafana进行图形和仪表板编辑,然后(当达到熟练程度时)转到Prometheus控制台模板。
获胜者是: Grafana在这里大获全胜,而Prometheus则获得第二名。
存储:
可视化是任务的一部分,但我们无法凭空想象时间序列。我们需要从源获取它们,并且此源需要以某种方式存储所有时间序列并提供查询它们的方法:
- Grafana: 没有时间系列存储支持。Grafana只是一种可视化解决方案。时间序列存储不是其核心功能的一部分。
- Graphite: 这是Graphite赢得Grafana的地方。Graphite可以存储从其他来源(通常是直接监控工具)获得的时间序列,并提供查询语言来获取存储的数据。同样,Grafana可以与Graphite一起使用,以便可视化存储在其存储后端的数据。
- Prometheus: 很好。Prometheus存储时间序列的方式是迄今为止最好的方式(由于其维度模型,它使用时间序列中的键值标记来更好地组织数据并提供强大的查询功能)。如前所述,Grafana可以与Prometheus查询语言一起使用,以创建图形和仪表板。
获胜者是:Prometheus在这方面表现出色,Graphite名列第二,Grafana则是绝对的失败者。
数据采集:
好的,您既有存储又可视化,但是,您需要从服务中获取数据。这是直接监控进入现场的地方。通过使用旧方法(SNMP)或新方法(agents),您需要一种方法来获取最终将存储为时间序列的度量标准:
- Grafana:没有数据收集支持。同样,Grafana只是一个可视化解决方案。无论是时间序列存储还是时间序列收集都不是其核心功能的一部分。
- Graphite:也没有数据收集支持,至少不是直接支持。您需要包含statd,collectd等解决方案才能使数据收集部分正常运行。Graphite将从这些来源获取所有数据,并将此数据作为时间序列存储在其存储后端中。
- Prometheus: 国王从数据收集战中回来了。是的,Prometheus可以与存储和可视化一起完成数据收集部分。这是一个非常完整的解决方案,就像街上的其他演员(Cacti,Nagios和Zabbix)。
获胜者是:Prometheus再次获胜,而Graphite和Grafana都输掉了这场比赛。