什么是Prometheus,为什么它如此受欢迎?

在这里插入图片描述
Prometheus是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据。更简单地说,Prometheus 商店中的每个项目都是一个指标事件,并带有它发生的时间戳。

Prometheus 最初是在 Soundcloud 开发的,但现在是一个由Cloud Native Computing Foundation (CNCF)支持的社区项目。在过去十年中,它迅速发展壮大,因为它结合了查询功能和云原生架构,使其成为现代应用程序的理想监控堆栈。

在本文中,我们将解释 Prometheus 的角色,浏览它如何存储和公开数据,并强调 Prometheus 的责任在哪里结束。其流行的部分原因在于该软件与其他平台的互操作性,这些平台可以以更方便的格式显示数据。

Prometheus有什么作用?

Prometheus 实时存储事件。这些事件可以是与您的应用程序相关的任何事件,例如内存消耗、网络利用率或单个传入请求。

基本数据单位是“度量”。每个指标都分配了一个名称,也可以引用它和一组标签。标签是任意键值数据对,可用于过滤数据库中的指标。

指标始终基于四种核心工具类型之一:

  • 计数器– 一个稳定增加的值,从不减少或重置。
  • 仪表– 可以随时向任何方向变化的值。
  • 直方图– 多个值的采样,提供所有存储值的总和,以及记录事件的计数。
  • 摘要– 摘要的功能类似于直方图,但支持可配置的分位数,用于在滑动时间段内进行聚合监控。

Prometheus 通过使用基于拉取的数据获取机制来确定指标的当前值。它会定期轮询支持每个指标的数据源,然后将结果作为新事件存储在时间序列数据库中。被监控的应用程序负责实现用作数据源的端点;这样的数据提供者通常被描述为输出者。

在这里插入图片描述

基于拉取的模型简化了将 Prometheus 集成到您的应用程序中的过程。您需要做的就是提供一个兼容的端点,该端点显示要收集的指标的当前值。Prometheus 处理其他一切。尽管这可能会导致效率低下——例如,如果 Prometheus 在其数据更改之前再次轮询端点——这意味着您的代码不需要处理度量传输。

更多关于出口商

导出器负责公开您的应用程序指标,以供 Prometheus 收集。许多用户会从Node Exporter的简单部署开始,它从安装它的 Linux 主机收集基本系统指标。

各种各样的出口商提供了许多Prometheus 本身或官方社群供应商提供。无论您是在监控 MySQL、PostgreSQL 和 MongoDB 等流行的数据库引擎,还是在跟踪 HTTP 服务器、日志引擎或消息总线,很可能已经存在导出器。

您可以通过编写自己的 exporter来跟踪应用程序自己的指标。这种方法确实没有任何限制——您可以捕获在登陆页面、销售量、用户注册或任何对您的系统重要的其他方面所花费的时间。

导出器是简单的 HTTP API 端点,因此它们可以用任何编程语言构建。Prometheus 为 Go、Java/Scala、Python 和 Ruby 提供官方客户端库,可以更轻松地检测您的代码。社区倡议也为大多数其他流行语言提供了非官方图书馆。

查询Prometheus数据

Prometheus 中的数据使用PromQL 进行查询,PromQL是一种内置查询语言,可让您使用各种运算符和函数来选择、解析和格式化指标。由于 Prometheus 使用时间序列存储,因此支持基于时间的范围和持续时间选择,可以轻松处理在特定时间段内添加的表面数据。

这是一个memory_consumption显示过去一小时内所有事件的示例:

memory_consumption[1h]

此示例仅显示过去一小时内记录的内存消耗事件。

您可以通过在大括号内添加键值对来按标签过滤:

memory_consumption{app="api"}[1h]

内置函数为更精确的分析提供了机会。下面是一个示例,该示例使用该rate()函数计算memory_consumption所选时间段内指标的增长率:

rate(memory_consumption[1h])

Prometheus 数据可以通过内置的 Web UI 访问,通常暴露在端口 9090 或HTTP API 上。后者提供了一种从 Prometheus 获取数据到其他工具(例如仪表板解决方案)的可靠方法。

警报

Prometheus 带有一个Alertmanager 组件,可以在指标更改时向您发送通知。它支持确定何时应该发送警报的基于规则的策略。

您可以接收关于您的电子邮件地址、任意 HTTP 网络钩子和流行的消息传递平台(如 Slack)的警报。Alertmanager 包括对聚合和静音重复警报的集成支持,因此当在短时间内发生多个事件时,您不会被淹没。

Alertmanager 的配置独立于 Prometheus 主系统。您在 Prometheus 中设置警报规则,确定指标应向 Alertmanager 发送警报的条件。然后,后一个组件决定是否应将警报传送到每个配置的平台。

Prometheus 不能做什么?

虽然 Prometheus 是一个全面的监控解决方案,但它不适合某些角色。Prometheus 的设计以可靠性和性能为核心原则。这会导致衡量指标准确性的权衡。

Prometheus 不保证收集到的数据是 100% 准确的。它适用于偶尔丢失的事件不会影响全局的高容量场景。如果您正在跟踪需要正确的敏感统计数据,您应该使用其他平台来处理这些指标。对于系统中不太重要的值,您仍然可以采用 Prometheus。

此外,Prometheus 可能不是您想要的监控堆栈中的唯一组件。它专注于存储和查询您的事件,主要使用 HTTP API。内置的 Web UI 提供基本的绘图功能,但不支持高级自定义仪表板。数据可视化场景通常通过部署一个Grafana实例来处理;这通过内置的Prometheus 集成提供仪表板和指标分析功能。

结论

简而言之,Prometheus 是一个时间序列数据存储,可用于管理任何基于时间的顺序数据。它最常用于监控堆栈中其他应用程序的指标。虽然 Prometheus 是用于存储和查询指标的有效系统,但它通常与其他解决方案集成,以支持图形仪表板和高级可视化。它的受欢迎程度取决于它能够处理自定义指标、支持丰富的查询以及与云原生生态系统的其他成员进行互操作。

在这里插入图片描述

Prometheus 旨在实现最大的可靠性。它旨在成为您在发生事故时的首选工具,帮助您了解其他组件出现故障的原因。集群部署中的各个 Prometheus 节点是完全自治的,不依赖于远程存储。由于其可靠性,Prometheus 不保证数据的准确性。在规划新部署时,此缺点应该是您的主要考虑因素。

虽然我们在本文中没有介绍安装 Prometheus 的实际步骤,但如果您想亲自试用该系统,官方文档提供了一个全面的快速入门指南。Prometheus 通常部署为 Docker 容器,但也可以从源代码或作为流行 Linux 发行版的预编译二进制文件获得。Dockerized 方法最容易使用,因为它在准备运行的配置中包含所有核心组件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值