SystemdDoctor

Оповещения не уходят: настройки не перечитались

Служба оповещений перечитывает настройки по сигналу и при ошибке в них оставляет прежние. Снаружи это выглядит хуже отказа: служба работает, состояние нормальное, а правки не действуют. Опасность в том, что заметить это можно только в журнале.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Ошибка в новых настройках

    Служба разобрала файл, нашла ошибку и отвергла его целиком. Прежние настройки остались в памяти.

  2. Перезагрузка настроена неверно в unit-файле

    Команда перезагрузки может посылать не тот сигнал или обращаться не туда. Тогда настройки не перечитываются вовсе.

  3. Правили не тот файл

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

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Результат последних перезагрузок настроек.

journalctl -u alertmanager -n 30 --no-pager | grep -iE "reload|config"

Какой файл читается и как делается перезагрузка.

systemctl show alertmanager -p ExecStart -p ExecReload

Какие настройки служба считает действующими.

curl -s http://127.0.0.1:9093/api/v2/status 2>/dev/null | head -c 300

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Ошибка в новых настройках
Почему происходит
Служба разобрала файл, нашла ошибку и отвергла его целиком. Прежние настройки остались в памяти.
Как проверить
Посмотрите сообщение о перезагрузке.
journalctl -u alertmanager -n 20 --no-pager | grep -iE "reload|error|completed"
Как исправить
Исправьте ошибку и повторите перезагрузку, затем убедитесь по журналу, что она прошла успешно. Проверять стоит всегда: отказ молчаливый.
2. Перезагрузка настроена неверно в unit-файле
Почему происходит
Команда перезагрузки может посылать не тот сигнал или обращаться не туда. Тогда настройки не перечитываются вовсе.
Как проверить
Посмотрите команду перезагрузки.
systemctl cat alertmanager | grep -iE "ExecReload|ExecStart"
Как исправить
Задайте перезагрузку сигналом главному процессу. Это надёжнее обращения по сети: не зависит от доступности порта.
[Service]
ExecReload=/bin/kill -HUP $MAINPID
3. Правили не тот файл
Почему происходит
Служба читает файл, указанный в команде запуска. Правка одноимённого файла в другом каталоге ничего не меняет.
Как проверить
Посмотрите, какой файл действительно читается.
systemctl show alertmanager -p ExecStart | tr " " "\n" | grep -i config
Как исправить
Правьте файл из команды запуска. Быстрая проверка — время изменения файла и время последней успешной перезагрузки.

Пример вывода

Перезагрузка отвергнута из-за ошибки в настройках. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

systemd[1]: Reloading alertmanager.service - Alertmanager...
alertmanager[6600]: level=error msg="Loading configuration file failed" file=/etc/alertmanager/alertmanager.yml err="yaml: line 22: mapping values are not allowed in this context"
systemd[1]: Reloaded alertmanager.service - Alertmanager.

Связанные ошибки

Где встречается чаще всего

Источники

  • systemd.service(5)
    ExecReload= и перезагрузка настроек службы.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Документация Alertmanager документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено правкой настроек с ошибкой разбора и перезагрузкой.
    собственная проверка, systemd 255
    сверено 15 сентября 2026