Overview | Prometheus

Overview | Prometheus

Prometheus project documentation for Overview

访问网站
我的收藏195 次访问更新于 a month ago反馈
Overview | Prometheus screenshot

详细介绍

Prometheus 简介

Prometheus 是一个开源的系统监控与告警工具包,最初由 SoundCloud 构建。自 2012 年诞生以来,许多公司和组织采用了 Prometheus,项目拥有非常活跃的开发者与用户社区。它现在是一个独立的开源项目,不依赖于任何公司维护。为了明确项目治理结构,Prometheus 于 2016 年加入云原生计算基金会(CNCF),成为继 Kubernetes 之后的第二个托管项目。

Prometheus 将指标收集并存储为时间序列数据,即指标信息会连同记录时的时间戳以及可选的键值对(称为标签)一起保存。

Prometheus 标志

主要功能

Prometheus 的主要特性包括:

  • 多维数据模型:时间序列由指标名称和键值对(标签)标识
  • PromQL:一种灵活的查询语言,可利用数据的多维特性
  • 不依赖分布式存储;单服务器节点自身独立自治
  • 通过 HTTP 拉取(pull)模型收集时间序列
  • 通过中间网关(push gateway)支持推送时间序列
  • 通过服务发现或静态配置发现抓取目标
  • 支持多种图形化和仪表板展示方式

什么是指标

指标通俗来说就是数值型测量值。时间序列指的是随时间记录变化的数据。不同应用需要测量的内容各不相同:Web 服务器可能关注请求耗时,数据库可能关注活跃连接数或活跃查询数等。

指标对于理解应用运行行为至关重要。例如,当 Web 应用变慢时,如果拥有请求数指标,就能判断是否是高请求量导致,从而决定扩容。

核心组件

Prometheus 生态包含多个组件,其中许多是可选的:

  • 主 Prometheus 服务器:抓取并存储时间序列数据
  • 用于埋点应用代码的客户端库
  • 支持短期任务的推送网关(push gateway)
  • 针对 HAProxy、StatsD、Graphite 等服务专用 exporter
  • 处理告警的 Alertmanager
  • 各类支持工具

大多数 Prometheus 组件使用 Go 语言编写,可轻松构建并部署为静态二进制文件。

系统架构

下图展示了 Prometheus 及其部分生态组件的架构:

Prometheus 架构图

Prometheus 从埋点的作业抓取指标,对于短期任务则通过中间推送网关间接抓取。它把所有抓取到的样本存储在本地,并对数据运行规则,以聚合记录新时间序列或生成告警。Grafana 或其他 API 消费者可用于可视化收集的数据。

适用场景

适合的场景

Prometheus 擅长记录任何纯数值型时间序列,既适合以机器为中心的监控,也适合高度动态的服务导向架构监控。在微服务世界,其对多维数据采集与查询的支持尤为突出。

Prometheus 以可靠性为设计核心,是故障期间快速诊断问题的系统。每个 Prometheus 服务器独立运行,不依赖网络存储或远程服务,即便基础设施其他部分故障也可信赖。

不适合的场景

Prometheus 重视可靠性,即使在故障条件下也能查看系统可用统计信息。如果需要 100% 精确的数据,则不适合使用 Prometheus。