Prometheus 生态系统由几个组件组成,每个组件都有自己的职责和明确定义的范围。 Prometheus 本身是必不可少的,因为它位于大多数交互的中间,但实际上许多组件是可选的,具体取决于您的监控需求。
如下图所示,Prometheus 生态系统中的主要组件如下:
- The Prometheus server collects time series data, stores it, makes it available for querying, and sends alerts based on it.
- The Alertmanager receives alert triggers from Prometheus and handles routing and dispatching of alerts.
- The Pushgateway handles the exposition of metrics that have been pushed from short-lived jobs such as cron or batch jobs.
- Applications that support the Prometheus exposition format make internal state available through an HTTP endpoint.
- Community-driven exporters expose metrics from applications that do not support Prometheus natively.
- First-party and third-party dashboarding solutions provide a visualization of collected data.
本书后面将深入探讨每一个:
Figure 2.1: High-level overview of the main components in the Prometheus ecosystem
Prometheus 服务器有自己的内部流程,比如记录规则和服务发现,在中有详细的解释
第 9 章,
定义警报和记录规则
和 <跨度>
第十二章,
选择正确的服务发现
,
分别。
Prometheus 最初是由 Matt T. Proud 和 Julius Volz 在 SoundCloud 工作时创建的。它的灵感来自 Google 的 Borgmon,它影响了它早期的许多设计:从指标端点抓取纯文本;出口商作为指标收集的代理;时间序列作为多维向量,然后可以对其进行转换和过滤;以及使用规则集评估来记录和警报,以及其他功能。
您可能很想尝试使 Prometheus 适合基于推送的指标收集模型,但这是不明智的。 Prometheus 的核心设计是围绕拉动,所以在从推向拉动转换时,许多假设自然会被打破。这将在我们接近 Pushgateway 时进一步解释。
Prometheus 的一个独特属性是它毫不掩饰地不尝试进行任何类型的聚类。通过不依赖网络进行协调和存储(尽管远程写入是可能的,正如我们将在本书末尾看到的那样),它为可靠性和易用性提供了一个很好的论据。只需选择适当的 Prometheus 二进制发行版并在您的计算机上本地运行它是微不足道的,但相同的二进制文件可能能够处理数千个抓取目标和每秒在服务器硬件上摄取数百万个样本。