Bootstrap

Prometheus 和 Grafana:功能、部署搭建、使用全解析

一、Prometheus

(一)简介

Prometheus 是一款开源的系统监控和告警工具包,由 SoundCloud 开发,后成为独立开源项目并加入 CNCF。它以其强大的多维数据模型、灵活的查询语言等特性,广泛应用于云原生环境、微服务架构以及传统应用监控等场景。

(二)特点

  1. 多维数据模型:采用时间序列数据记录监控指标,每个时间序列由指标名称和一组键值对标识,便于灵活地进行数据查询和聚合。
  2. 灵活的查询语言:PromQL 允许用户实时对监控数据进行复杂的聚合、过滤和计算,满足多样化的监控分析需求。
  3. 数据抓取:通过 HTTP 协议周期性地从被监控目标抓取指标数据,被监控目标需暴露相应的 HTTP 端点。
  4. 多维度标签:在抓取数据时可添加标签,用于区分不同的实例、环境、服务等,实现细粒度的监控和分析。
  5. 本地存储:数据存储在本地磁盘,同时支持通过远程存储扩展将数据存储到其他系统。
  6. 告警机制:支持设置告警规则,当监控指标满足特定条件时触发告警,可通过邮件、Slack 等多种方式通知。

(三)部署与搭建

1. 下载与安装

Prometheus 提供了多种操作系统的二进制包,可从官方网站(Download | Prometheus )下载适合自己操作系统的版本。以下以 Linux(amd64 架构)为例:

bash

# 下载 Prometheus 二进制包
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
# 解压文件
tar xvfz prometheus-2.47.0.linux-amd64.tar.gz
# 进入解压后的目录
cd prometheus-2.47.0.linux-amd64
2. 配置文件编写

Prometheus 通过配置文件 prometheus.yml 来指定监控目标和相关规则。以下是配置文件中常见参数及一个综合示例配置:

常见参数说明
  • 全局配置(global)
    • scrape_interval:全局的数据抓取间隔时间,即 Prometheus 多久从目标数据源抓取一次数据。示例:scrape_interval: 15s 表示每 15 秒抓取一次数据。
    • evaluation_interval:告警规则的评估间隔时间,Prometheus 会按照此间隔对告警规则进行检查。示例:evaluation_interval: 15s 意味着每 15 秒评估一次告警规则。
    • scrape_timeout:每次数据抓取的超时时间,如果在该时间内未完成数据抓取,则认为此次抓取失败。示例:scrape_timeout: 10s 表示抓取数据的时间不能超过 10 秒。
  • 告警配置(alerting)
    • alertmanagers:指定 Alertmanager 的地址,Prometheus 会将触发的告警信息发送到这些地址对应的 Alertmanager 实例。示例:

yaml

alerting:
  alertmanagers:
    - static_configs:
        - targets:
   
;