Конфиг 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и применяйте горячей перезагрузкой.