跳转至

Prometheus简介

基本原理

Prometheus 的基本架构如下图所示:

img

核心:收集数据、处理数据、可视化展示,再进行数据分析进行报警处理

从上图可以看到,整个 Prometheus 可以分为四大部分,分别是:

  • Prometheus 服务器

Prometheus Server 是 Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询

  • NodeExporter 业务数据源

业务数据源通过 Pull/Push 两种方式推送数据到 Prometheus Server

  • AlertManager 报警管理器

Prometheus 通过配置报警规则,如果符合报警规则,那么就将报警推送到 AlertManager,由其进行报警处理

  • 可视化监控界面

Prometheus 收集到数据之后,由 WebUI 界面进行可视化图标展示。目前我们可以通过自定义的 API 客户端进行调用数据展示,也可以直接使用 Grafana 解决方案来展示

Prometheus 服务端

Prometheus 服务端负责数据的收集

https://prometheus.io/download/ 可以找到最新版本的安装包

# prometheus.yaml 是 Prometheus 的配置文件
# 默认加载当前路径下的 prometheus.yaml 文件
./prometheus --config.file=prometheus.yaml

输入 http://localhost:9090/graph 可以看到 Prometheus 自带的监控管理界面

客户端数据源

每一个监控指标之前都会有一段类似于如下形式的信息:

# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125
  • HELP 用于解释当前指标的含义
  • TYPE 则说明当前指标的数据类型

配置 Prometheus 的监控数据源

配置一下 Prometheus 的配置文件,让 Prometheus 服务器定时去业务数据源拉取数据

示例:编辑 prometheus.yaml 并在 scrape_configs 节点下添加以下内容

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  # 采集 node exporter 监控数据
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:8080']

上面配置文件配置了两个任务。一个是名为 prometheus 的任务,其从localhost:9090 地址读取数据。另一个是名为 node 的任务,其从localhost:8080地址读取数据

查询监控数据

通过 Prometheus UI 可以查询 Prometheus 收集到的数据,而 Prometheus 定义了 PromQL 语言来作为查询监控数据的语言