概述

近年来,随着容器技术的迅猛发展,Kubernetes 已然成为受大家热捧的容器集群管理系统。Prometheus 作为 CNCF 的重要成员,活跃度仅此于 Kubernetes,现已广泛应用于 Kubernetes 集群的监控系统中。

Prometheus 是一套开源的系统监控报警框架。它始于2012年由 SoundCloud 创建,并作为社区开源项目进行开发。2016,Prometheus 正式加入 Cloud Native Computing Foundation (简称:CNCF),成为受欢迎程度仅次于 Kubernetes 的项目。
architecture.png

  • Server 主要负责数据采集和存储,提供 PromQL 查询语言的支持。
  • Alertmanager 警告管理器,用来进行报警。
  • Push Gateway 支持临时性 Job 主动推送指标的中间网关。

服务过程

image.png

Prometheus Daemon 定时抓取数据,每个抓取目标需要暴露一个 http 服务的接口给它定时抓取,采用 PULL 的方式进行监控,即服务器可以直接通过目标 PULL 数据或者间接地通过中间网关来 Push 数据。

Prometheus 在本地存储所有数据,通过一定的规则进行清理与数据整理,将得到的结果存储到新的时间序列中。

PromQL 和其他 API 可视化地展示收集的数据。Prometheus 支持很多方式的图表可视化,例如 Grafana、自带的 Promdash 以及自身提供的模版引擎等等。Prometheus还提供 HTTP API 的查询方式,自定义所需要的输出。

PushGateway 支持 Client 主动推送 metrics 到 PushGateway,而 Prometheus 只是定时去 Gateway 上抓取数据。主要用于短期的 jobs。由于这类 jobs 存活时间较短,可能在 Prometheus server 来 pull 之前就消失了。

Alertmanager 是独立于 Prometheus 的一个组件,可以支持 Prometheus 的查询语句,提供十分灵活的报警方式。