Конфиг prometheus.yml и scrape_configs

Урок объясняет, как из файла prometheus.yml собрать рабочую конфигурацию сбора метрик.

prometheus.yml — главный конфигурационный файл Prometheus, где описано, как часто и с каких целей собирать метрики.

Вся работа Prometheus начинается с этого YAML-файла. Понять его структуру — значит понять, откуда на дашбордах берутся данные.

Базовая структура

Файл состоит из нескольких секций. Минимально нужны две: global с настройками по умолчанию и scrape_configs со списком целей.

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
      - targets: ["localhost:9100"]

Что значат поля

  • scrape_interval — как часто опрашивать цели (здесь раз в 15 секунд).
  • evaluation_interval — как часто пересчитывать правила и алерты.
  • job_name — имя группы целей; попадает в лейбл job каждой метрики.
  • static_configs.targets — список адресов host:port для опроса.

Несколько целей и метки

В одном job можно указать несколько целей и навесить общие лейблы. Они добавятся ко всем метрикам этого блока.

scrape_configs:
  - job_name: "web-servers"
    metrics_path: "/metrics"
    scrape_interval: 30s
    static_configs:
      - targets:
          - "web1.local:9100"
          - "web2.local:9100"
        labels:
          env: "prod"
          team: "backend"

Как работает под капотом

При старте Prometheus читает scrape_configs и формирует список целей. Для каждой цели по таймеру scrape_interval он делает GET на metrics_path (по умолчанию /metrics). Помимо ваших лейблов он автоматически добавляет служебные: job, instance (адрес цели). Перезагрузить конфиг без рестарта можно, послав процессу сигнал или вызвав endpoint reload.

# Проверить корректность конфига перед применением
promtool check config prometheus.yml

# Горячая перезагрузка (если включён --web.enable-lifecycle)
curl -X POST http://localhost:9090/-/reload

Вывод:

Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

Частые ошибки

  • Ошибки отступов YAML. Один лишний пробел ломает структуру; проверяйте через promtool check config.
  • Указать в targets URL со схемой. Нужен host:port, а не http://host; схема задаётся отдельным полем scheme.
  • Слишком маленький scrape_interval для всех job'ов. Это раздувает объём данных без пользы.

Итог

  • prometheus.yml описывает global-настройки и scrape_configs.
  • job_name группирует цели и попадает в лейбл job.
  • Проверяйте конфиг через promtool и применяйте горячей перезагрузкой.
Проверьте себя
1. Что задаёт параметр scrape_interval?
AСрок хранения данных
BКак часто Prometheus опрашивает цели
CРазмер блока на диске
DПорт веб-интерфейса
2. Что должно быть указано в поле targets?
AПолный URL вида http://host/metrics
BАдрес в формате host:port
CТолько имя job
DПуть к файлу с метриками
3. Чем удобно проверить prometheus.yml перед применением?
Acurl /metrics
Bpromtool check config
Cnode_exporter
Dgrafana-cli