03.3、Prometheus配置基础
Prometheus 配置基础
本节将学习:Prometheus 配置文件的结构、scrape_configs 的配置、以及目标发现机制。这些是配置 Prometheus 的基础知识。
配置文件结构
配置文件在哪里? 配置文件的位置取决于你的安装方式:
- Windows:C:\prometheus\prometheus.yml
- macOS:/usr/local/etc/prometheus.yml
- Linux:/etc/prometheus/prometheus.yml
配置文件的基本结构是什么样的?
这是一个基本的配置文件示例:
global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: [] rule_files: [] scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
配置文件有几个主要部分:
第一个是 global。 全局配置。例如,scrape_interval 是抓取间隔,evaluation_interval 是评估间隔。
第二个是 alerting。 告警配置。这里配置告警管理器的地址,我们将在后续章节详细讲解。
第三个是 rule_files。 规则文件配置。这里配置告警规则和记录规则的文件路径,我们将在后续章节详细讲解。
第四个是 scrape_configs。 抓取任务配置。这是最重要的部分,我们等一下会详细讲解。
这就是配置文件的基本结构。我们等一下会详细讲解每个部分。
global 全局配置
global 配置是什么? global 配置是全局配置。它会影响所有抓取任务,除非在具体的抓取任务中覆盖。
global 配置有哪些配置项呢?
第一个是 scrape_interval。 Prometheus 抓取指标的间隔时间,默认值是 15s。可以设置为 10s、30s、1m 等等。单位可以是秒(s)、分钟(m)、小时(h)。
第二个是 scrape_timeout。 每次抓取的超时时间,默认值是 10s。建议设置为小于 scrape_interval。例如,如果 scrape_interval 是 15s,scrape_timeout 可以设置为 10s。
第三个是 evaluation_interval。 评估告警规则和记录规则的间隔,默认值是 15s。这个我们将在后续章节讲解告警规则的时候详细讲解。
第四个是 external_labels。 添加到所有时间序列的外部标签。例如,可以添加 cluster、environment 这些标签,用来区分不同的集群、环境。
举个例子:
global: scrape_interval: 15s scrape_timeout: 10s evaluation_interval: 15s external_labels: cluster: 'production' environment: 'prod'
这个配置设置了全局的抓取间隔、超时时间、评估间隔和外部标签。
这就是 global 全局配置。它会影响所有抓取任务。
scrape_configs 抓取任务配置
scrape_configs 是什么? scrape_configs 是最重要的配置部分,用于配置 Prometheus 需要抓取哪些目标的指标。
基本配置示例是什么样的? 这是一个基本的配置示例:
scrape_configs: - job_name: 'prometheus' scrape_interval: 15s static_configs: - targets: ['localhost:9090'] labels: instance: 'prometheus-server' - job_name: 'node-exporter' scrape_interval: 10s static_configs: - targets: ['localhost:9100']
配置项说明:
第一个是 job_name。 任务名称,用于标识抓取任务。例如,'prometheus'、'node-exporter'。这个名称会作为 label 添加到所有指标中。
第二个是 scrape_interval。 抓取间隔,可选,如果不设置,会继承 global 配置。可以为每个任务设置不同的抓取间隔。
第三个是 static_configs。 静态配置,手动指定目标。这是最简单的方式,我们等一下会讲其他的方式。
第四个是 targets。 目标列表,格式为 host:port。例如,['localhost:9090']、['localhost:9100']。
第五个是 labels。 标签,添加到该任务的所有指标中。例如,instance、environment 这些标签。
这个配置的作用是什么? 这个配置告诉 Prometheus:
- 抓取 'prometheus' 任务,目标是 localhost:9090,每 15 秒抓取一次
- 抓取 'node-exporter' 任务,目标是 localhost:9100,每 10 秒抓取一次
这就是 scrape_configs 的基本配置。我们等一下会讲更多的配置选项。
目标发现机制
Prometheus 支持哪些目标发现方式呢?
第一种是静态配置(static_configs)。 手动指定目标列表,适用于固定目标、少量目标。这是最简单的方式,我们刚才已经看过了。
第二种是服务发现(service discovery)。 自动发现目标,适用于动态环境、大量目标。例如,在 Kubernetes 环境中,服务可能会动态创建和销毁,这时候使用服务发现就非常方便。
Prometheus 支持哪些服务发现方式呢?
- Kubernetes:kubernetes_sd_configs。用于 Kubernetes 环境。
- Consul:consul_sd_configs。用于 Consul 环境。
- Docker:docker_sd_configs。用于 Docker 环境。
- 文件:file_sd_configs。从文件读取目标列表。
静态配置示例: 手动指定多个目标。
scrape_configs: - job_name: 'static-targets' static_configs: - targets: - 'target1:9090' - 'target2:9090' - 'target3:9090' labels: environment: 'production'
服务发现示例(Kubernetes): 自动发现 Kubernetes Pod。
scrape_configs: - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true
这个配置会自动发现 Kubernetes Pod,并且只抓取有
prometheus.io/scrape=true这就是目标发现机制。静态配置简单,服务发现灵活。选择适合你的方式。
配置文件验证
验证配置文件有什么方法呢?
第一种方法:使用 promtool 验证。 Prometheus 提供了一个工具叫 promtool,可以用来验证配置文件。
- 在 Linux/macOS 上:
promtool check config prometheus.yml - 在 Windows 上:
promtool.exe check config prometheus.yml
如果配置正确,它会显示:
SUCCESS: prometheus.yml is valid prometheus config file syntax如果配置错误,它会显示错误信息,例如:
FAILED: parsing YAML file prometheus.yml: yaml: line 10: found unexpected end of stream第二种方法:启动时验证。 Prometheus 启动时会自动验证配置文件。如果配置错误,启动会失败,并且显示错误信息。
第三种方法:测试重载配置。 如果想在不重启 Prometheus 的情况下重载配置,可以:
- 在 Linux/macOS 上:发送 SIGHUP 信号,
kill -HUP $(pgrep prometheus) - 或使用 API(所有平台):
curl -X POST http://localhost:9090/-/reload
这就是验证配置文件的方法。修改配置后,记得验证一下,确保配置正确。
本节小结
在本节中,我们学习了 Prometheus 配置基础:
第一个是配置文件结构。 global、alerting、rule_files、scrape_configs。每个部分都有不同的作用。
第二个是 scrape_configs。 最重要的配置部分,配置抓取任务。这里配置 Prometheus 需要抓取哪些目标的指标。
第三个是目标发现。 静态配置和服务发现。静态配置简单,服务发现灵活,选择适合你的方式。
第四个是配置文件验证。 使用 promtool 验证,确保配置正确。
配置文件结构总结:prometheus.yml 包含 global、alerting、rule_files、scrape_configs 这几个部分。scrape_configs 是最重要的,可以配置静态配置或服务发现。
这就是 Prometheus 配置基础。理解这些基础知识,是掌握 Prometheus 的关键。
在下一节,我们将学习 Node Exporter:系统指标收集。学习如何安装和配置 Node Exporter,收集系统资源使用情况。