OpenTelemetry 与 Prometheus - 架构和指标的差异

这篇具有很好参考价值的文章主要介绍了OpenTelemetry 与 Prometheus - 架构和指标的差异。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在不断发展的软件开发世界中,可观察性使软件工程师能够实时洞察复杂的系统。OpenTelemetry 和 Prometheus 是著名的云原生计算基金会 (CNCF) 毕业项目,但用于监控和调试应用程序的可观察性工具不同。

本文探讨了 OpenTelemetry 和 Prometheus 的特性、优点、缺点和主要区别。软件开发人员必须了解独特的可交付成果和用例,才能决定哪种框架最适合他们的需求。

什么是开放遥测 (OTel)?

OpenTelemetry 是一个开源可观测性框架,用于从软件应用程序中检测、收集和导出遥测数据。它是规范、SDK 和库的集合,可帮助收集、转换、处理和导出遥测数据。这些遥测数据提供了有关应用程序性能和运行状况的见解。OTel 提供与供应商无关的模型,该模型提供各种编程语言和框架的库,以及在不更改遥测处理器的情况下将遥测数据导出到不同供应商后端的可能性。Otel 可与 Jaeger、Grafana、Prometheus、DataDog、NewRelic、Last9 和众多供应商一起使用,使其与供应商无关。

OpenCensus 是一个开源项目,提供可观测性数据收集的库和工具,与 OpenTracing(跨不同语言和系统的分布式跟踪标准)合并到 OpenTelemetry 中。这个统一项目旨在标准化可观测性仪器和数据收集。OpenTelemetry 越来越受欢迎,它代表了可观测性的未来,得到了众多组织和供应商的认可。

OTel 是如何构建的?

OpenTelemetry 使用模块化和可扩展的架构构建在标准化工具之上。以下是 OTel 架构的一些组件。

API

OpenTelemetry 为 Java、JavaScript、Python 和 Go 等流行编程语言提供特定于语言的 API。这些 API 定义了开发人员用于检测其应用程序并生成遥测数据的方法和接口。

SDK

软件开发套件 (SDK) 是基于 OpenTelemetry API 构建的实现库。它们自动捕获由仪表化应用程序生成的遥测数据并实施 OTel API。OpenTelemetry Collector接收处理、过滤和导出各种格式的遥测数据。

OTel 提供与供应商无关的检测应用程序模型,该模型提供了可检测流行框架和库的库。这简化了向基于各种编程语言和框架(例如 Spring 和 Express.js)构建的应用程序添加遥测的过程。

OTel 如何运作?

OTel 使您能够使用 OpenTelemetry API 和 SDK 添加应用程序检测。这会自动将系统组件定向到您寻求收集、分析和导出的特定日志、跟踪或遥测数据。借助 OTel API,可以将跟踪、日志和指标添加到您的代码中,以简化数据处理和导出。遥测数据处理涉及过滤数据中的错误。完成此操作后,数据就可以导出到预先指定的后端。

OTel的特点

OpenTelemetry 提供了一系列功能,包括以下功能。

自动仪表盘

自动检测允许软件开发人员初始化指标、日志和跟踪,而无需篡改应用程序源代码。

分布式追踪

OpenTelemetry 使开发人员能够跟踪分布式系统中不同服务之间的事务。这使得您可以轻松理解前端到后端的请求流,并实现高效的错误识别和解决。

指标集合

OpenTelemetry 可以从已检测的应用程序中收集和分析指标,并以增量而不是累积的形式表示指标。因此,与 Prometheus 不同,它提供对整数指标值的支持。此外,它还允许您将额外的元数据附加到直方图,从而能够跟踪最大值和最小值。

日志记录和错误报告

借助 OTel,您可以记录应用程序中的重要事件和错误,并将其导出到日志系统以进行进一步分析。

灵活的导出器

OpenTelemetry 允许自定义导出器将遥测数据发送到不同的后端系统和可观测平台。

为什么 OpenTelemetry 很重要?

OpenTelemetry 通过提供收集和导出遥测数据的标准化方法,在现代可观测性实践中发挥着至关重要的作用。其关联指标和跟踪的能力简化了故障排除和性能分析。

OpenTelemetry 的优点

以下是 OpenTelemetry 的一些基本优势。

  1. OpenTelemetry 标准化且易于采用的遥测数据收集方法有助于提高软件的可观察性。

  2. OTel与各种平台和可观测工具无缝集成,包括Prometheus。

  3. OTel 通过开发自定义导出器、插件和检测库来实现自定义和可扩展性。其自动化仪器库还减少了仪器应用程序所需的工作量和时间。

  4. OpenTelemetry 捕获多层遥测数据,包括跟踪、指标和日志。

  5. OpenTelemetry支持编程语言,包括Java、Python、JavaScript和Go。

  6. OpenTelemetry 得到了坚实而活跃的社区的支持,其中包括著名的行业专家。这确保了可观测性实践中最新进展的持续开发、支持和整合。

OpenTelemetry 的缺点

  1. OpenTelemetry 的高级功能,例如可集成性、上下文传播、分布式跟踪和自定义导出器,使其成为易于处理的可观察性工具。由于 OTel 能够将其代码合并到被监控的应用程序的代码中,这违反了关注点分离原则,因此可能需要额外的学习和专业知识。

  2. OpenTelemetry作为开源工具,随着新版本的发布,可能需要持续维护和升级。

  3. OTel的数据采集和传输过程会消耗CPU、内存、网络带宽等系统资源。这可能需要额外的资源、增加开销并影响性能。

Prometheus 是什么?

Prometheus 是 SoundCloud 开发的开源监控和警报工具包,旨在收集、处理和可视化来自各种应用程序的指标,使用名为 PromQ 的灵活查询语言来深入了解应用程序运行状况和性能。

Prometheus 是如何建造的?

Prometheus 是作为一个独立平台构建的。以下是 Prometheus 架构的一些关键组件。

编程语言

Prometheus 主要使用 Go 编程语言(Golang)编写,很好地平衡了性能和开发效率。

时间序列数据库

Prometheus 使用定制的时间序列数据库 (TSDB) 来存储和查询收集的指标。TSDB 针对快速高效的时间序列数据摄取、存储和检索进行了优化。

基于拉动的数据模型

Prometheus 采用基于拉动的模型,定期从检测目标中抓取指标。它支持各种抓取协议,包括 HTTP、HTTPS 和 DNS。

PromQL

Prometheus 灵活的查询语言 PromQL 支持各种功能,例如创建自定义聚合函数,用于操作和查询时间序列数据。PromQL 还有助于复杂的查询,例如按标签过滤指标和执行数学运算。

监控和警报

Prometheus 利用名为 Prometheus Expression Browser 的基于 Web 的图形可视化仪表板进行监控和故障排除。它还提供内置警报功能,允许用户根据特定阈值定义警报规则。Prometheus 可以通过各种通知渠道(例如电子邮件或 Slack)发送警报。

导出器

Prometheus 支持丰富的导出器生态系统,这些导出器收集特定于应用程序的指标并以 Prometheus 可以抓取的格式导出它们。

Prometheus 如何工作?

当 Prometheus 配置了目标(例如应用程序服务器、数据库或导出器)时,它会使用各种协议定期从配置的目标中抓取指标。默认情况下,它每 15 秒抓取一次指标,但可以重新配置此间隔。在抓取过程中,Prometheus 从目标收集特定于应用程序、系统级或自定义定义的指标数据,例如 CPU 使用情况、内存使用情况、请求延迟或任何其他相关指标。然后,它将收集到的指标存储在时间序列数据库中,该数据库根据唯一的指标名称、标签和时间戳对这些指标进行组织。

之后,您可以使用 PromQL 定义和分析复杂查询、应用函数和聚合,以及过滤收集的数据以检索所需的信息。Prometheus 使用请求的指标响应这些查询,并根据您的预定义阈值将事件警报发送到您的通知渠道。

Prometheus 的特点

Prometheus 提供以下功能。

服务发现和目标管理

Prometheus 提供服务发现机制,可以在新服务实例上线时自动发现和监控它们。它可以与 Kubernetes、Consul 和 EC2 等服务发现系统集成。

稳健查询

借助 PromQL,您可以使用灵活的语法检索和分析指标,包括函数、聚合和运算符。PromQL 支持一系列用于操作和查询时间序列数据的操作,允许软件开发人员创建自定义仪表板和警报。

警报和通知

Prometheus 有一个内置的警报系统,允许您根据特定条件或阈值定义警报规则。当满足警报条件时,Prometheus 会通过各种通知渠道生成并发送警报。

数据可视化

Prometheus 表达式浏览器允许用户可视化指标、创建图表和探索数据。该界面提供了用于缩放、平移和应用各种图形选项的交互功能。

等级联邦

Prometheus 服务器通常能够监控大量软件组件。但为了使可观测性更具成本效益,Prometheus 提供了分层联合功能,允许软件开发人员配置单个高级 Prometheus 服务器来从多个低级服务器收集指标。

一体化

Prometheus 与各种工具和系统集成,例如警报管理器、可视化平台和时间序列数据库。

为什么Prometheus很重要?

Prometheus 对于软件开发人员实时监控应用程序事件至关重要。在软件开发过程中嵌入Prometheus是必不可少的。这样做将帮助您了解不同的数据类型和软件基础设施如何交叉和交互,而无需单独检查每个架构。

监控和收集面向用户的前端和后端性能数据的最终目标是减少应用程序错误、改善延迟并扩大客户群。最终用户希望应用程序能够快速、正确、高效地运行。当应用程序运行效率低下时,用户通常会迁移到替代平台,从而导致企业组织的收入损失。

部署 Prometheus 等可观察性工具来研究揭示后端系统功能(例如错误率和延迟)的功能指标,以避免这种情况。然后将这些数据映射到各个基础设施以解决软件问题。

除了作为可观测平台的一般功能外,Prometheus 还有两个显着特征:它提供短期存储和可视化层。这些显着特征是 OTel 所不具备的优势。

Prometheus的优点

下面详细列出了 Prometheus 的六大主要优势。

  1. Prometheus 易于设置和配置,需要的开销最小。

  2. PromQL允许开发人员对收集的指标数据执行复杂的查询、聚合和计算。

  3. Prometheus内置的警报系统允许您定义警报规则,并在满足设定的规则和阈值时收到通知。

  4. Prometheus 的联合允许随着监控需求的增长轻松进行水平扩展。

  5. 它拥有一个充满活力的生态系统,拥有许多导出器和集成商。

  6. Prometheus可以灵活高效地存储、检索和分析时间序列数据。

Prometheus的缺点

以下是 Prometheus 的一些关键缺点。

  1. Prometheus 依赖于从目标中抓取指标数据,这可能会带来长期延迟和可扩展性挑战,特别是在重负载或分布式环境中。

  2. Prometheus 主要关注指标收集,不提供对分布式跟踪的原生支持。

  3. 虽然 Prometheus 是为处理大规模部署而构建的,但它可能面临长期数据存储的挑战。尽管它会在可配置的保留期限内保留数据,但用户需要考虑历史数据存储的外部解决方案,使其成为资源密集型监控解决方案。

  4. Prometheus主要侧重于基于指标的监控,因此用户必须选择其他工具和方案来解决链路跟踪和日志。

OTel 与 Prometheus 的高级比较

下表列出了 OTel 和 Prometheus 之间的一些重要区别。

OpenTelemetry 与 Prometheus - 架构和指标的差异,prometheus,架构

OpenTelemetry 与 Prometheus 中的指标

OpenTelemetry 中指标的语义约定( OTLP 指标)与Prometheus 的本机指标命名约定不一致。这意味着 OpenTelemetry 和 Prometheus 中的指标不具有相同的格式和规范。

为了解决这种差异,有一个模块otel-collector-contrib提供集中式功能,有助于将 OpenTelemetry 指标转换为符合 Prometheus 的指标。

最近,Prometheus 还开始添加对本地摄取 OpenTelemetry 指标的支持。以下是 Prometheus 和 OpenTelemetry 中指标的比较。

OpenTelemetry 与 Prometheus - 架构和指标的差异,prometheus,架构

总结

为您的特定应用程序和基础设施需求选择合适的可观察性框架至关重要。虽然 OpenTelemetry 和 Prometheus 是强大的工具,但 OpenTelemetry 提供了一种更全面的跨平台和语言的可观察性方法,支持指标和分布式跟踪。深入理解突出的功能和差异将使您能够做出明智的决策并利用适当的框架来满足您的可观察性需求。

原创不易,随手关注或者”在看“,诚挚感谢!文章来源地址https://www.toymoban.com/news/detail-822599.html

到了这里,关于OpenTelemetry 与 Prometheus - 架构和指标的差异的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Prometheus相关的主机监控指标

    CPU负载指标 node_load1 node_load5 node_load15 以上三个指标为主机CPU平均负载,分别对应一分钟、五分钟和十五分钟的时间间隔。CPU负载是指某段时间内占用CPU时间的进程和等待CPU时间的进程数之和。一般来说,cpu负载数/cpu核数如果超过0.7,应该开始关注机器性能情况 ,如果超过

    2023年04月17日
    浏览(37)
  • Prometheus实现自定义指标监控

    前面我们已经通过 Prometheus+Grafana 实现了监控,可以在 Grafana 上看到对应的 SpringBoot 应用信息了, 通过这些信息我们可以对 SpringBoot 应用有更全面的监控。 但是如果我们需要对一些业务指标做监控,我们应该怎么做呢?这篇文章就带你一步步实现一个模拟的订单业务指 标监

    2024年02月12日
    浏览(48)
  • Prometheus之rabbitmq监控指标详解

    rabbitmq_channels 用于显示RabbitMQ服务器上当前打开的通道数量。 通过监控这个指标,您可以了解到RabbitMQ服务器打开的通道数随时间变化的情况,以及通道数量是否很高或者非常低。 rabbitmq_connections 用于显示与RabbitMQ服务器的连接总数。 该指标可以帮助您跟踪RabbitMQ服务器的连

    2024年02月14日
    浏览(39)
  • Prometheus监控指标查询性能调优

    一、背景 在《SRE: Google运维解密》一书中作者指出,监控系统需要能够有效的支持白盒监控和黑盒监控。黑盒监控只在某个问题目前正在发生,并且造成了某个现象时才会发出紧急警报。“白盒监控则大量依赖对系统内部信息的检测,如系统日志、抓取提供指标信息的 HTTP 节

    2024年02月13日
    浏览(44)
  • 时间差异导致数据缺失,如何调整Grafana时间与Prometheus保持同步?

    Grafana时间如何调快或调慢? 在k8s环境中,常使用prometheus+grafana做监控组件,prometheus负责采集、存储数据,grafana负责监控数据的可视化。 在实际的使用中,有时会遇到这样的问题,k8s集群中的时间比真实时间慢,这个时候,在grafana上查看数据面板的时候,可能会出现数据缺

    2024年02月02日
    浏览(37)
  • 使用 prometheus client SDK 暴露指标

    To expose Prometheus metrics in a Go application, you need to provide a /metrics HTTP endpoint. You can use the prometheus/promhttp library’s HTTP Handler as the handler function. This minimal application, for example, would expose the default metrics for Go applications via http://localhost:2112/metrics : To start the application: To access the metrics: T

    2024年02月13日
    浏览(36)
  • Prometheus常用exporter及其常用监控指标

    CPU相关指标: node_cpu_seconds_total{mode=\\\"idle\\\"} :CPU空闲时间(秒)的总和。这是评估CPU使用率的重要指标之一。 node_cpu_seconds_total{mode=\\\"system\\\"} 、 node_cpu_seconds_total{mode=\\\"user\\\"} 等:分别表示CPU在内核态和用户态的运行时间。 内存相关指标: node_memory_MemTotal_bytes :内存总量(以字节为

    2024年03月11日
    浏览(65)
  • SpringBoot+Prometheus采集Metrics指标数据

    简介 本文介绍在springboot3.x里配置启用系统指标监控功能,来监视系统各项Metrics指标,从而实时了解应用的运行健康状态,通过promtheus服务提供数据收集与指标可视化方案; Metrics指标 metrics指标表示应用程序代码运行中提供的多维度指标数据,每一条指标数据通常由时间序列

    2024年02月04日
    浏览(48)
  • Prometheus监控运维实战十: 主机监控指标

    1、CPU指标 CPU负载 以上三个指标为主机的CPU平均负载,分别对应一分钟、五分钟和十五分钟的时间间隔。CPU负载是指某段时间内占用CPU时间的进程和等待CPU时间的进程数之和。一般来说,cpu负载数/cpu核数如果超过0.7,应该开始关注机器性能情况 ,如果超过1的话,运维人员应

    2024年02月06日
    浏览(49)
  • 统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?

    简单网络管理协议SNMP(Simple Network Management Protocol)用于网络设备的管理。网络设备种类多种多样、不同厂商提供的管理接口(如命令行接口)又不相同,这使得网络管理变得愈发复杂。为解决这一问题,SNMP应运而生。SNMP作为广泛应用于TCP/IP网络的标准网络管理协议,提供了

    2024年01月24日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包