一、Prometheus
(一)简介
Prometheus 是一款开源的系统监控和告警工具包,由 SoundCloud 开发,后成为独立开源项目并加入 CNCF。它以其强大的多维数据模型、灵活的查询语言等特性,广泛应用于云原生环境、微服务架构以及传统应用监控等场景。
(二)特点
- 多维数据模型:采用时间序列数据记录监控指标,每个时间序列由指标名称和一组键值对标识,便于灵活地进行数据查询和聚合。
- 灵活的查询语言:PromQL 允许用户实时对监控数据进行复杂的聚合、过滤和计算,满足多样化的监控分析需求。
- 数据抓取:通过 HTTP 协议周期性地从被监控目标抓取指标数据,被监控目标需暴露相应的 HTTP 端点。
- 多维度标签:在抓取数据时可添加标签,用于区分不同的实例、环境、服务等,实现细粒度的监控和分析。
- 本地存储:数据存储在本地磁盘,同时支持通过远程存储扩展将数据存储到其他系统。
- 告警机制:支持设置告警规则,当监控指标满足特定条件时触发告警,可通过邮件、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 秒。
- scrape_interval:全局的数据抓取间隔时间,即 Prometheus 多久从目标数据源抓取一次数据。示例:
- 告警配置(alerting)
- alertmanagers:指定 Alertmanager 的地址,Prometheus 会将触发的告警信息发送到这些地址对应的 Alertmanager 实例。示例:
yaml
alerting:
alertmanagers:
- static_configs:
- targets: