Prometheus配置

1 配置文件结构

global:           # 全局配置(抓取间隔、超时等)
scrape_configs:   # 定义抓取目标(监控对象)
alerting:         # 告警管理器(Alertmanager)配置
rule_files:       # 告警规则文件路径
remote_write:     # 远程存储写入配置(如 Thanos、InfluxDB)
remote_read:      # 远程存储读取配置

2 全局配置

global:
  scrape_interval: 15s      # 默认抓取间隔(可被单个任务覆盖)
  evaluation_interval: 15s  # 规则评估间隔(告警规则和记录规则)
  scrape_timeout: 10s       # 单次抓取超时时间

  # 外部标签(附加到所有时间序列和告警)
  external_labels:
    region: "us-west"
    env: "prod"

3 数据抓取配置

定义需要监控的目标(如服务器、数据库、应用),支持静态配置或动态服务发现。

3.1 静态配置

3.2 动态服务发现

3.3 基于文件的服务发现

  • 动态更新​​:通过外部工具(如Ansible)生成目标列表文件,Prometheus监听文件变化。

3.4 DNS服务发现

  • 动态DNS记录​​:通过SRV或A记录解析目标地址。

3.5 抓取参数

  • metrics_path: 指标路径(默认 /metrics

  • scheme: 协议(httphttps

  • basic_auth: 基础认证

  • tls_config: TLS 证书配置

4 告警配置

4.1 告警规则文件

4.2 Alertmanager配置

5 存储与远程读写

5.1 远程写入

5.2 远程读取

6 完整示例

7 alertmanager配置

Alertmanager 的配置是其告警处理的核心,定义了告警的路由、分组、抑制、通知方式等规则。

7.1 全局配置

7.2 路由配置

该配置定义告警如何被分组、过滤和路由到接收器。路由树支持嵌套。

字段
说明

receiver

默认接收器名称(必须存在)。

group_by

分组依据的标签(如 [cluster, alertname])。

group_wait

初次发送告警前的等待时间(默认 30s,收集同组告警)。

group_interval

相同组告警的间隔时间(默认 5m)。

repeat_interval

重复发送未修复告警的间隔(默认 4h)。

routes

子路由列表(支持嵌套匹配)。

match / match_re

标签精确匹配或正则匹配。

7.3 接收器

定义告警通知的发送目标,每个接收器可配置多种通知方式(如同时发邮件和Slack)。

7.4 抑制规则

防止特定条件下重复发送告警(如网络故障时抑制服务不可达告警)。

7.5 自定义模板

通过 Go 模板引擎定制通知内容格式,需指定模板文件路径。

  • 定义模板文件

  • 配置文件引用模板

7.6 完整示例

最后更新于