概述

什么是 Prometheus?

Prometheus 是一个开源的系统监控和告警工具包,最初在 SoundCloud 构建。 自 2012 年成立以来,许多公司和组织都采用了 Prometheus,并且该项目拥有非常活跃的开发人员和用户社区。 它现在是一个独立的开源项目,并且独立于任何公司维护。 为了强调这一点,并澄清项目的治理结构,Prometheus 在 2016 年作为第二个托管项目加入了 云原生计算基金会,排在 Kubernetes 之后。

Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳一起存储,同时还带有可选的键值对,称为标签。

有关 Prometheus 的更详细概述,请参阅 媒体 部分链接的资源。

功能

Prometheus 的主要功能包括

  • 多维数据模型,时间序列数据通过指标名称和键/值对来识别
  • PromQL,一种灵活的查询语言,用于利用此维度
  • 不依赖于分布式存储;单个服务器节点是自治的
  • 时间序列集合通过 HTTP 上的拉取模型进行
  • 通过中间网关支持推送时间序列
  • 目标通过服务发现或静态配置发现
  • 多种图形和仪表板支持模式

什么是指标?

用通俗的话来说,指标是数值测量。术语时间序列是指记录随时间的变化。用户想要测量的东西因应用程序而异。对于 Web 服务器,可能是请求时间;对于数据库,可能是活动连接数或活动查询数,依此类推。

指标在了解应用程序为何以某种方式工作方面起着重要作用。 假设您正在运行一个 Web 应用程序并发现它很慢。 要了解您的应用程序发生了什么,您需要一些信息。 例如,当请求数量很高时,应用程序可能会变慢。 如果您有请求计数指标,则可以确定原因并增加服务器数量以处理负载。

组件

Prometheus 生态系统由多个组件组成,其中许多是可选的

大多数 Prometheus 组件是用 Go 编写的,这使得它们易于构建和部署为静态二进制文件。

架构

下图说明了 Prometheus 及其一些生态系统组件的架构

Prometheus architecture

Prometheus 直接或通过用于短生命周期作业的中间推送网关从仪表化的作业中抓取指标。 它在本地存储所有抓取的样本,并在此数据上运行规则,以聚合和记录来自现有数据的新时间序列或生成警报。 Grafana 或其他 API 消费者可用于可视化收集的数据。

它何时适用?

Prometheus 非常适合记录任何纯数字时间序列。 它既适合以机器为中心的监控,也适合高度动态的面向服务的架构的监控。 在微服务的世界中,其对多维数据收集和查询的支持是一项特别的优势。

Prometheus 的设计旨在提高可靠性,成为您在中断期间可以使用的系统,使您能够快速诊断问题。 每个 Prometheus 服务器都是独立的,不依赖于网络存储或其他远程服务。 您可以在基础设施的其他部分损坏时依赖它,并且您无需设置广泛的基础设施即可使用它。

它何时不适用?

Prometheus 重视可靠性。 您始终可以查看有关系统的可用统计信息,即使在故障情况下也是如此。 如果您需要 100% 的准确性,例如用于按请求计费,则 Prometheus 不是一个好的选择,因为收集的数据可能不够详细和完整。 在这种情况下,您最好使用其他系统来收集和分析计费数据,而使用 Prometheus 来进行其余的监控。

此文档是开源的。 请通过提交问题或拉取请求来帮助改进它。