prometheus.yml
Тема дорожной карты · Prometheus
Файл prometheus.yml — ключевой конфигурационный файл системы мониторинга Prometheus, который управляет всеми аспектами её работы, включая глобальные настройки, задания опроса, интеграции с системами оповещения и другие параметры. Этот файл является центром управления для Prometheus и играет важную роль в настройке и функционировании системы. Он использует синтаксис YAML и содержит разделы, такие как global, alerting, rule_files и scrape_configs.
Как это работает
Файл prometheus.yml состоит из нескольких разделов, каждый из которых отвечает за определённые аспекты конфигурации Prometheus. Раздел global содержит параметры, такие как scrape_interval и evaluation_interval, а также внешние метки. Раздел alerting включает адрес Alertmanager, который используется для отправки оповещений. Раздел rule_files указывает пути к файлам правил оповещений и записи, а раздел scrape_configs определяет задания опроса и целевые объекты.
Prometheus поддерживает горячую перезагрузку конфигурационного файла prometheus.yml, что позволяет вносить изменения без необходимости перезапуска службы. Для перезагрузки конфигурации можно использовать сигнал SIGHUP, отправленный процессу Prometheus, или сделать POST-запрос на эндпоинт /-/reload, если включен флаг --web.enable-lifecycle.
Когда применять
Для Kubernetes рекомендуется использовать пакет kube-prometheus-stack, который включает Prometheus, Alertmanager, Grafana, node-exporter и kube-state-metrics с разумными дефолтными настройками. Для других систем можно использовать официальный Docker-образ Prometheus, создать persistent volume для хранения данных и настроить reverse proxy для доступа к интерфейсу.
Важно всегда запускать Prometheus с параметром --storage.tsdb.retention.time, который определяет, сколько времени будут храниться данные. Также рекомендуется включить флаг --web.enable-lifecycle, чтобы обеспечить возможность горячей перезагрузки конфигурации.
Типичные ошибки
Одним из распространённых недоразумений является использование Prometheus без persistent storage. В этом случае каждый перезапуск службы стирает историю данных, что делает невозможным анализ временных рядов. Другой распространённой ошибкой является использование дефолтного значения 15d для параметра --storage.tsdb.retention.time на системах с очень высокой производительностью, например, генерирующих 1 ТБ данных в день. В этом случае диск может заблокироваться из-за накопления данных.
Также следует избегать экспозиции /metrics и UI Prometheus в публичный интернет без использования аутентификации или reverse proxy с аутентификацией. Это может привести к утечке информации.