Prometheus

55692
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

Prometheus 概览


Prometheus 是什么?

Prometheus 是一个开源的系统监控和告警工具包,最初由 SoundCloud 构建。自 2012 年诞生以来,许多公司和组织都采用了 Prometheus,它拥有非常活跃的开发者和用户社区。目前,Prometheus 已经成为一个独立的开源项目,并独立于任何公司进行维护。为了强调这一点,并理清本项目的治理结构,Prometheus 在 2016 年加入了 Cloud Native Computing Foundation(CNCF),成为继 Kubernetes 后的第二个托管项目。

Prometheus 将其指标存储为时间序列数据,即通过指标名称以及键值对(称为标签)来标识指标信息。

有关更详细的 Prometheus 概述,请参考来自”有用的资源”部分的链接。

特性

Prometheus 的主要特性包括:

  • 多维度的数据模型,支持通过指标名称和键值对标识时间序列数据
  • PromQL,一种利用维度的灵活查询语言
  • 不依赖分布式存储;自治的单个服务器节点
  • 通过 HTTP 拉模式采集时间序列数据
  • 支持通过中间代理推送时间序列
  • 通过服务发现或静态配置来发现 Target(采集目标)
  • 支持多种图形绘制和仪表盘功能

什么是指标?

用一般人的话来说,指标指的是数值测量。时间序列指的是随时间变化的记录。不同应用要测量的内容各不相同。例如,对于 Web 服务器,可以是请求花费的时间;而对于数据库,则可以是活跃的连接数或活跃的查询等。

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

组件

Prometheus 生态系统包含多个组件,其中大部分是可选使用的:

  • 主要的 Prometheus 服务器,用于抓取和存储时间序列数据
  • 用于进行代码埋点的应用程序客户端库
  • 用于支持短暂任务的推送网关
  • 专门用于服务(如 HAProxy、StatsD、Graphite 等)的 Exporter(导出器)
  • 处理警报的 Alertmanager
  • 各种支持工具

大多数 Prometheus 组件都是用 Go 编写的,这使得它们易于构建和部署。

架构

此图说明了 Prometheus 和其生态系统组件的架构:

Prometheus 从被埋点的工作负载中抓取指标,这一过程通过直接或间接地通过 Pushgateway(位于架构中间的推送网关,用于短暂的工作负载)来进行。Prometheus 将所有抓取的样本存储在本地,并评估规则(rules)来聚合现有数据生成新的时间序列或将数据用于生成告警。这些数据能够被 Grafana 或其他 API 消费者用于进行可视化操作。

什么情况下适合使用 Prometheus?

Prometheus 适用于记录任何纯数字的时间序列数据。它既适用于主机为中心的监控,也适用于监控高度动态的面向服务的架构(Service-Oriented Architectures)。在微服务的体系内,它对多维度数据收集和查询的支持是一个显著的优势。

Prometheus 以可靠性为目标而设计。它是一个在发生故障期间,能够帮助你快速诊断问题,让你可以赖以依靠的系统。每个 Prometheus 服务器都是独立的,不依赖网络存储或其他远程服务。当你的基础设施的其他部分出现故障时,你完全可以相信 Prometheus 的可靠性。同时你也无需配置大量的基础设施就可以使用 Prometheus。

什么情况下不适合使用 Prometheus?

Prometheus 重视可靠性。即使在采集失败的条件下,你也可以查看有关系统的可用统计信息。如果你需要 100% 的准确性(例如用于按请求计费),那么也许 Prometheus 并不是一个很好的选择,因为它收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析用于计费的数据,而使用 Prometheus 来完成其余的监控。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32