什么是普罗米修斯?
Prometheus是一个开源系统监控和警报工具包,最初是在 SoundCloud构建的。自2012年推出以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年加入 云原生计算基金会,成为继Kubernetes之后的第二个托管项目。
Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳一起存储,以及称为标签的可选键值对。
特征
普罗米修斯的主要特点是:
- 多维数据模型,其中时间序列数据由指标名称和键/值对标识
- PromQL,一种 利用此维度的灵活查询语言
- 不依赖分布式存储;单个服务器节点是自治的
- 时间序列收集通过 HTTP 上的拉模型进行
- 通过中间网关支持推送时间序列
- 通过服务发现或静态配置发现目标
- 多种图形和仪表板支持模式
什么是指标?
指标是外行术语中的数值测量。术语时间序列是指随时间变化的记录。用户想要测量的内容因应用程序而异。对于 Web 服务器来说,它可能是请求时间;对于数据库,它可以是活动连接或活动查询的数量等。
指标在理解应用程序为何以某种方式运行方面发挥着重要作用。假设您正在运行一个 Web 应用程序并发现它很慢。要了解您的应用程序发生了什么,您将需要一些信息。例如,当请求数量较多时,应用程序可能会变慢。如果您有请求计数指标,则可以确定原因并增加处理负载的服务器数量。
组成
Prometheus 生态系统由多个组件组成,其中许多组件是可选的:
- 主要的Prometheus 服务器,用于抓取和存储时间序列数据
- 用于检测应用程序代码的客户端库
- 支持短期工作的推送网关
- HAProxy、StatsD、Graphite 等服务的特殊用途导出器。
- 处理警报的警报管理器
- 各种支持工具
大多数 Prometheus 组件都是用Go编写的,这使得它们很容易作为静态二进制文件构建和部署。
架构图
prometheus适用于什么地方
Prometheus 非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控,也适合高度动态的面向服务的架构的监控。在微服务的世界中,它对多维数据收集和查询的支持是一个特殊的优势。
Prometheus 的设计注重可靠性,是您在中断期间可以使用的系统,以便您快速诊断问题。每个 Prometheus 服务器都是独立的,不依赖于网络存储或其他远程服务。当基础设施的其他部分损坏时,您可以依赖它,并且无需设置大量基础设施即可使用它。
什么地方不适合
普罗米修斯重视可靠性。即使在出现故障的情况下,您也可以随时查看有关系统的可用统计信息。如果您需要 100% 的准确性,例如按请求计费,Prometheus 不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,您最好使用其他系统来收集和分析计费数据,并使用 Prometheus 进行其余的监控。