SystemdDoctor
prometheus.service мониторинг

Prometheus в systemd: почему не поднимается

Prometheus проверяет свой файл настроек при запуске и отказывается стартовать при любой ошибке в нём. Вторая частая причина — права на каталог данных, третья — оставшаяся блокировка после аварийного завершения.

О службе

Файл настроек в формате YAML, и отступы в нём значимы. Проверять его лучше отдельной утилитой из комплекта Prometheus, а не перезапуском службы: она печатает файл, строку и суть ошибки.

Каталог данных содержит блокировку: второй экземпляр на тех же данных не запустится. Это защита от порчи базы метрик, и обходить её удалением файла блокировки при работающем процессе нельзя.

Как устроена

Файл настроек/etc/prometheus/prometheus.yml, формат YAML
Проверка настроекpromtool check config /etc/prometheus/prometheus.yml
Каталог данныхзадаётся ключом --storage.tsdb.path, обычно /var/lib/prometheus
Порт по умолчанию9090
Перезагрузка настроексигнал HUP или запрос к /-/reload при включённом ключе

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

9 записей базы отмечены за этой службой.

Коды выхода

  • status=1/FAILURE в systemdКод 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.

Сообщения журнала

  • Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
  • Address already in use при запуске службыПорт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.

Ресурсы и ограничения

Ошибки служб

Коды выхода этой службы

Числа в status=N ниже 200 назначает сама программа, 200 и выше — systemd, когда не смог подготовить запуск.

statusЧто означает у этой службыКуда смотреть
1/FAILURE ошибка в файле настроек, права на каталог данных или занятый порт. разбор
2 недопустимые ключи командной строки. разбор

Диагностика

Проверка настроек с указанием строки ошибки.

promtool check config /etc/prometheus/prometheus.yml

Состояние и последние строки журнала.

systemctl status prometheus --no-pager -l

Права на каталог данных и место.

sudo ls -ld /var/lib/prometheus && df -h /var/lib/prometheus

Отвечает ли служба.

curl -s localhost:9090/-/healthy

Параметры unit, которые тут важны

  • User=служба работает от prometheus, каталог данных должен принадлежать ему
  • LimitNOFILE=много открытых файлов блоков метрик
  • ExecReload=перезагрузка настроек сигналом без перезапуска
  • StateDirectory=каталог данных удобно объявлять через параметр systemd

Источники

  • Документация Prometheus: настройка документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026