Prometheus 是一个开源系统监控和告警工具包,最初由 SoundCloud 开发。自 2012 年问世以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发人员和用户 社区。现在,它是一个独立的开源项目,独立于任何公司维护。为了强调这一点,并澄清项目的治理结构,Prometheus 于 2016 年加入了 云原生计算基金会,成为继 Kubernetes 之后第二个托管项目。
Prometheus 收集并存储其指标作为时间序列数据,即指标信息与记录时的的时间戳一起存储,以及可选的键值对,称为标签。
有关 Prometheus 的更详细概述,请参阅 媒体 部分链接的资源。
Prometheus 的主要功能是
指标是通俗易懂的数字测量。时间序列是指随时间变化的记录。用户想要测量的指标因应用而异。对于 Web 服务器,它可能是请求时间;对于数据库,它可能是活动连接数或活动查询数,等等。
指标在理解应用程序为何以特定方式工作方面起着重要作用。假设您正在运行一个 Web 应用程序,并发现它很慢。为了了解应用程序发生了什么,您需要一些信息。例如,当请求数量很高时,应用程序可能会变慢。如果您有请求计数指标,您就可以确定原因并增加服务器数量以处理负载。
Prometheus 生态系统包含多个组件,其中许多是可选的
大多数 Prometheus 组件是用 Go 编写的,使其易于构建并作为静态二进制文件部署。
该图说明了 Prometheus 及其生态系统组件的架构
Prometheus 从监控的作业中抓取指标,无论是直接抓取还是通过中间推送网关(用于短期作业)进行抓取。它在本地存储所有抓取的样本,并在这些数据上运行规则,以从现有数据中聚合和记录新的时间序列,或生成告警。可以使用 Grafana 或其他 API 消费者来可视化收集的数据。
Prometheus 非常适合记录任何纯粹的数字时间序列。它既适合以机器为中心的监控,也适合监控高度动态的面向服务的体系结构。在微服务的世界中,它对多维数据收集和查询的支持是一个特别的优势。
Prometheus 旨在实现可靠性,成为您在出现故障时可以求助的系统,以便您可以快速诊断问题。每个 Prometheus 服务器都是独立的,不依赖于网络存储或其他远程服务。当您的基础设施的其他部分出现故障时,您可以依靠它,并且您不需要设置大量基础设施来使用它。
Prometheus 重视可靠性。您始终可以查看有关系统的可用统计信息,即使在故障情况下也是如此。如果您需要 100% 的准确性,例如针对每个请求的计费,那么 Prometheus 不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析计费数据,并将 Prometheus 用于其他监控需求。
本文档是 开源的。请通过提交问题或拉取请求来帮助改进它。