不备案网站怎么做推广,网络推广外包业务怎么样,怡清源企业网站建设可行性分析,泰安网站建设电话公众号「架构成长指南」#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 时序数据库有很多#xff0c;比如Prometheus、M3DB、TimescaleDB、OpenTSDB、InfluxDB等等。Prometheus和VictoriaMetrics是开源的时间序列数据库#xff0c;在复杂的环境中提供了强大… 公众号「架构成长指南」专注于生产实践、云原生、分布式系统、大数据技术分享 时序数据库有很多比如Prometheus、M3DB、TimescaleDB、OpenTSDB、InfluxDB等等。Prometheus和VictoriaMetrics是开源的时间序列数据库在复杂的环境中提供了强大的监控和警报解决方案。然而它们的设计不同并提供了独特的功能这些功能可能会影响它们在监视工作负载方面的性能、可扩展性和易用性。本文分析Prometheus和VictoriaMetrics之间的差异以为特定需求的用户提供最合适的解决方案。
Prometheus
Prometheus最初是 SoundCloud 中的一个项目是一个功能强大的监控和警报工具包专门用于处理多维环境中的时间序列数据。由于其对多维数据收集、查询和警报生成的本机支持它在 SRE 和 DevOps 社区中变得非常受欢迎。
Prometheus 是在云原生计算基金会 (CNCF) 下开发的。Prometheus 服务器、客户端库、Alertmanager 和其他相关组件可以在 Prometheus GitHub 组织中找到。主要存储库是 https://github.com/prometheus/prometheus
VictoriaMetrics
VictoriaMetrics则是一个高性能、高性价比、可扩展的时间序列数据库可以作为Prometheus的长期远程存储。它拥有超强的数据压缩和高速数据摄取能力使其成为大规模监控任务的有吸引力的替代方案。VictoriaMetrics源代码可以在以下位置找到https://github.com/VictoriaMetrics/VictoriaMetrics
性能比较
VictoriaMetrics 与 Prometheus 之间的数据摄取和查询率性能基于使用指标的基准node_exporter测试。内存和磁盘空间使用情况数据适用于单个 Prometheus 或 VictoriaMetrics 服务器。
比较PrometheusVictoriaMetrics数据采集基于拉动基于拉式和推式数据摄取每秒高达 240,000 个样本每秒高达 360,000 个样本数据查询每秒高达 80,000 次查询每秒高达 100,000 次查询内存使用情况高达 14GB RAM高达 4.3GB 的 RAM数据压缩使用LZF压缩使用 Snappy 压缩磁盘写入频率更频繁地将数据写入磁盘减少将数据写入磁盘的频率磁盘空间使用情况需要更多磁盘空间需要更少的磁盘空间查询语言PromQLMetricsQL向后兼容 PromQL
可扩展性和集成性比较
Prometheus使用基于PUll模型来收集指标可以处理多达数百万个活动时间序列。该架构虽然简化了监控服务方的操作。但是也有一定的弊端比如多个实例抓取的是相同的监控指标不能保证采集的数据值为一致的并且在实际的使用中可能遇到网络延迟问题所以会产生数据不一致的问题不过对于监控报警这个场景来说一般不会要求数据的强一致性所以从业务上来说是可以接受因为这种数据不一致性影响基本上没什么影响。这种场景适合监控规模不大只需要保存短周期监控数据的场景。 而 VictoriaMetrics支持pull模型和Push模型。它能够处理大量数据和更广泛的网络场景得益于其推送模型支持使其具有可扩展性和灵活性。
Prometheus架构 Prometheus的架构由四个主要组件组成 Prometheus Server Prometheus Server是Prometheus的核心组件主要负责从各个目标target中收集指标metrics数据并对这些数据进行存储、聚合和查询。 Client Libraries Prometheus提供了多种客户端库用于在应用程序中嵌入Prometheus的指标收集功能。 Exporters Exporters是用于将第三方系统的监控数据导出为Prometheus格式的组件。Prometheus支持多种Exporters例如Node Exporter、MySQL Exporter、HAProxy Exporter等。 AlertmanagerAlertmanager是Prometheus的告警组件用于根据用户定义的规则对监控数据进行告警。 服务发现Prometheus 支持各种服务发现机制帮助它找到应该抓取的目标。 PromQL这是 Prometheus 内置的灵活查询语言用于数据探索和仪表板与 SQL 不同。
VictoriaMetrics架构
VictoriaMetrics 提供单机版和集群版。如果您的每秒写入数据点数小于100万这个数量是个什么概念呢如果只是做机器设备的监控每个机器差不多采集200个指标采集频率是10秒的话每台机器每秒采集20个指标左右100万/205万台机器VictoriaMetrics 官方默认推荐您使用单机版单机版可以通过增加服务器的CPU核心数增加内存增加IOPS来获得线性的性能提升。且单机版易于配置和运维。
下面这是一个集群版的架构图 VictoriaMetrics在保持更简单的架构的同时还包括几个核心组件
vmstorage数据存储以及查询结果返回默认端口为 8482vminsert数据录入可实现类似分片、副本功能默认端口 8480vmselect数据查询汇总和数据去重默认端口 8481vmagent数据指标抓取支持多种后端存储会占用本地磁盘缓存默认端口 8429vmalert报警相关组件不如果不需要告警功能可以不使用该组件默认端口为 8880
数据压缩和存储效率
Prometheus拥有高效的存储系统但在长期数据存储后端和检索效率方面不如VictoriaMetrics。
VictoriaMetrics 相对于 Prometheus 的主要优势之一是其数据压缩功能。它的数据压缩算法可显着降低存储要求。VictoriaMetrics 声称提供比 Prometheus 高出 10 倍的数据压缩这是长期数据保留和成本优化的关键优势。
Prometheus
内存存储Prometheus利用内存存储来访问最近的时间序列数据。数据库中的这个部分被称为head block。磁盘存储当数据达到一定的年龄或大小后位于head block中的数据会被移动到磁盘中这个过程称为checkpointing。这个数据库由长期存储的persistent blocks组成。
VictoriaMetrics
1.内存存储与 Prometheus 类似VictoriaMetrics 使用内存存储在传入数据写入磁盘之前进行缓冲。这种方法有助于优化写入性能。同事还缓存经常访问的数据以加快检索速度。
2.磁盘存储VictoriaMetrics 中的大部分数据存储在磁盘上。它使用一种高效的存储格式可以实现大幅度的进行数据压缩。
查询语言
PromQL
Prometheus使用PromQL。PromQL 允许实时选择和聚合时间序列数据。它使我们能够高度灵活地使用指标。通过 PromQL用户可以过滤和聚合指标计算比率、比率、平均值和百分位数等指标。
MetricsQL
VictoriaMetrics向后兼容 PromQL。我们都可以按照理解的 PromQL 语法来进行查询。但是它还引入了 PromQL 的扩展称为MetricsQL。MetricsQL 增强了 PromQL 提供的查询功能。它引入了新函数、运算符和语法糖。简化并改善了用户体验特别是对于复杂的查询和聚合。
摄取率
Prometheus
Prometheus定期从监控目标中获取指标。这些获取的频率的调整可以控制数据摄取速率。Prometheus实际上能够摄取数据的速率取决于许多因素包括运行的硬件性能、被获取的指标的复杂性以及存储层的效率。如果Prometheus无法跟上传入数据量可能会丢弃样本或增加延迟。
VictoriaMetrics
VictoriaMetrics则比Prometheus更加高效利用资源。它声称在相同的数据量下能够更高效地摄取数据使用更少的CPU、内存和磁盘空间。这种效率使得VictoriaMetrics在相同硬件上能够比Prometheus更快地摄取数据。在架构设计方面VictoriaMetrics可以通过拉取与Prometheus类似和推送模式来摄取数据。推送模式对于高基数数据和摄取速率是有帮助的。
高可用性和可靠性
Prometheus 本身并不支持集群这意味着它不提供原生高可用性。高可用性可以通过运行重复实例来实现或者thanos架构当然也可以整合VictoriaMetrics。 而VictoriaMetrics 在设计时就考虑到了高可用性。它使用复制和集群来确保在实例发生故障时数据不会丢失从而成为了很多大厂的选择。
API接口
Prometheus和VictoriaMetrics都提供了基于 Http的 API接口已满足客户端调用需求
Prometheus API
查询Prometheus提供了PromQL查询语言用户可以使用该语言通过HTTP API查询指标数据。元数据API endpoint提供对 Prometheus 服务器中关系列和标签的元数据的访问。管理某些管理任务例如删除系列、快照等也可以通过 API 执行。
VictoriaMetrics API
VictoriaMetrics提供了一个全面的HTTP API根据功能分为几个部分 适用于Prometheus的指标API此API与Prometheus的HTTP API兼容这意味着可以将VictoriaMetrics作为Prometheus的替代品。 InfluxDB APIVictoriaMetrics还提供与InfluxDB的写入和查询API兼容的API。这使得从InfluxDB切换到VictoriaMetrics也很容易。 Graphite APIVictoriaMetrics还为Graphite的API提供了一个兼容层。 MetricsQL和PromQL API这些API用于查询存储在VictoriaMetrics中的指标数据。MetricsQL是VictoriaMetrics特定的 PromQL扩展提供了PromQL中不可用的额外功能。
与 Grafana 集成
由于 VictoriaMetrics兼容Prometheus所以在 在 Grafana 进行可视化配置时可以使用“Prometheus”数据源并将 Url 设置为VictoriaMetrics Server 地址即可。
总结
以上我们总结Prometheus与VictoriaMetrics的各个方面的对比虽然VictoriaMetrics在某些方面可能比Prometheus更强大比如在处理大规模数据和高并发负载时的性能表现完全可以替换Prometheus但它相对来说是相对较新的项目尚未达到Prometheus在用户社区和广泛采用方面的水平。此外Prometheus的发展时间更早是CNCF第二个毕业的项目已经得到了大量用户的验证并且有更多的文档、教程和案例可供参考。
此外技术的流行和广泛采用并不仅仅取决于技术本身的性能还受到多个因素的影响包括市场宣传、社区支持、用户体验和可用性等。Prometheus在这些方面都做得相对较好因此在监控领域更为流行和广泛采用。 参考 https://last9.io/blog/prometheus-vs-victoriametrics/
https://www.qikqiak.com/post/victoriametrics-usage/