在本指南中,我们将详细介绍 Prometheus 架构。
Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。
此外,在当今世界,可观测性对每个组织来说都变得至关重要,而 Prometheus 是开源领域的关键可观测性工具之一。
在这篇博客中,我们将了解 Prometheus 的所有关键组件,以及它们如何协同工作以使整个监控系统正常工作。
Prometheus 架构
以下是 Prometheus 架构的高级概述。
Prometheus 主要由以下部分组成。
- Prometheus 服务器
- 服务发现
- 时序数据库(TSDB)
- 目标
- 导出器
- 推送网关
- 警报管理器
- 客户端库
- PromQL系列
让我们详细看一下每个组件。
Prometheus 服务器
Prometheus 服务器是基于指标的监控系统的大脑。服务器的主要工作是使用拉取模型从各种目标收集指标。
Target 只不过是服务器、pod、端点等,我们将在下一主题中详细介绍。
使用 Prometheus 从目标收集指标的一般术语称为抓取(pull)。
Prometheus 会根据 Prometheus 配置文件中提到的抓取间隔定期抓取指标。
下面是一个示例配置。
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 10s
rule_files:
- "rules/*.rules"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
时序数据库(TSDB)
prometheus 接收的指标数据会随时间变化(CPU、内存、网络 IO 等)。它称为时间序列数据。因此,Prometheus 使用时间序列数据库 (TSDB) 来存储其所有数据。
默认情况下,Prometheus 将其所有数据以有效的格式(块)存储在本地磁盘中。随着时间的流逝,它会压缩所有旧数据以节省空间。它还具有保留策略来删除旧数据。
Prometheus 还提供远程存储选项。这主要是存储可扩展性、长期存储、备份和灾难恢复等所必需的。