Оповещения не уходят: настройки не перечитались
Служба оповещений перечитывает настройки по сигналу и при ошибке в них оставляет прежние. Снаружи это выглядит хуже отказа: служба работает, состояние нормальное, а правки не действуют. Опасность в том, что заметить это можно только в журнале.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Ошибка в новых настройках
Служба разобрала файл, нашла ошибку и отвергла его целиком. Прежние настройки остались в памяти.
-
Перезагрузка настроена неверно в unit-файле
Команда перезагрузки может посылать не тот сигнал или обращаться не туда. Тогда настройки не перечитываются вовсе.
-
Правили не тот файл
Служба читает файл, указанный в команде запуска. Правка одноимённого файла в другом каталоге ничего не меняет.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Результат последних перезагрузок настроек.
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Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Служба разобрала файл, нашла ошибку и отвергла его целиком. Прежние настройки остались в памяти.
- Как проверить
-
Посмотрите сообщение о перезагрузке.
journalctl -u alertmanager -n 20 --no-pager | grep -iE "reload|error|completed"
- Как исправить
- Исправьте ошибку и повторите перезагрузку, затем убедитесь по журналу, что она прошла успешно. Проверять стоит всегда: отказ молчаливый.
- Почему происходит
- Команда перезагрузки может посылать не тот сигнал или обращаться не туда. Тогда настройки не перечитываются вовсе.
- Как проверить
-
Посмотрите команду перезагрузки.
systemctl cat alertmanager | grep -iE "ExecReload|ExecStart"
- Как исправить
-
Задайте перезагрузку сигналом главному процессу. Это надёжнее обращения по сети: не зависит от доступности порта.
[Service] ExecReload=/bin/kill -HUP $MAINPID
- Почему происходит
- Служба читает файл, указанный в команде запуска. Правка одноимённого файла в другом каталоге ничего не меняет.
- Как проверить
-
Посмотрите, какой файл действительно читается.
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.
Связанные ошибки
- Приложение не перечитывает настройки по сигналу Перезагрузка настроек не применяет изменения: приложение не поддерживает сигнал или читает файл только при старте.
- nginx reload не применяет изменения Перезагрузка nginx прошла, а изменения не действуют: правка не в том файле, файл не включён, кеш, старые рабочие процессы.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Prometheus не собирает метрики: цель недоступна Цель в состоянии down: служба не слушает нужный адрес, закрыт порт или обрывается по таймауту сбора.
- smartd: устройства не найдены, наблюдение за дисками не работает Служба наблюдения за дисками запущена, но ничего не проверяет: устройства не определились или скрыты контроллером.
- Агент наблюдения не может прочитать нужные данные Проверки возвращают отказ доступа: агент работает от непривилегированного пользователя и ограничен изоляцией.
- Панели и источники данных не подхватываются при запуске Описания источников и панелей не применяются: каталог недоступен службе или описания с ошибкой.
- Перезагрузка балансировщика рвёт соединения При применении настроек часть запросов теряется: перезапуск вместо плавной перезагрузки или отсутствие передачи сокетов.
Где встречается чаще всего
Источники
-
systemd.service(5)
ExecReload= и перезагрузка настроек службы. - Документация Alertmanager
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено правкой настроек с ошибкой разбора и перезагрузкой.