Расследование загадочного падения мониторинга по расписанию и как мы нашли неожиданного виновника.
🎭 Сценарий
На сервере Zabbix периодически появлялась ошибка:
Сервис мониторинга переставал работать, хотя все службы были запущены. Особенность: проблема возникала примерно в 6 утра, после чего приходилось вручную перезагружать сервер.
🔍 Шаг 1: Первые подозрения
Первая мысль - проблемы с базой данных. Проверяем:
systemctl status mariadb
Результат: MariaDB inactive (dead). Но почему? Логи показывают корректное завершение:
фев 05 06:20:24 zabbix-6-4-19 systemd[1]: Stopping mariadb.service
фев 05 06:20:24 zabbix-6-4-19 mariadbd[869]: Normal shutdown
фев 05 06:20:34 zabbix-6-4-19 mariadbd[869]: Shutdown complete
MariaDB не "падала" - её останавливали корректно. Кто и зачем?
🕵️ Шаг 2: Расследование по времени
Смотрим логи вокруг 6:20 утра:
sudo journalctl --since "06:00" --until "06:30"
apt-daily-upgrade.service запускается в 6:20 и начинает останавливать службы! Это автоматические обновления Ubuntu.
🎯 Шаг 3: Понимание механизма
Как это работает:
- unattended-upgrades обновляет пакеты Ubuntu
- needrestart проверяет, какие процессы используют обновлённые библиотеки
- Если процесс использует старую версию библиотеки (например, libc6) - служба перезапускается
- MariaDB, использующая обновлённые библиотеки, получает сигнал остановки
- Zabbix теряет соединение с БД → ошибка "No such file or directory". вероятно обновляется сокет сервера базы данных и создается новый, а забикс пытается подключиться к старому.
⚠️ Ирония ситуации: Система мониторинга "умирает" от того, что её же операционная система решила "заботиться" о безопасности через автообновления.
💡 Шаг 4: Решение
Есть несколько вариантов:
Вариант А: Полное отключение автообновлений
# Отключить таймеры
sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer
# Отключить в конфигурации APT
echo 'APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
# Удалить пакет (самый надёжный)
sudo apt remove --purge unattended-upgrades -y
Вариант Б: Оставить обновления, но запретить перезапуск служб
# Настроить needrestart
sudo nano /etc/needrestart/needrestart.conf
# Изменить строку:
$nrconf{restart} = 'l'; # 'l' = никогда не перезапускать
# Добавить исключения для критических служб
$nrconf{override_rc}{'mariadb'} = 0;
$nrconf{override_rc}{'zabbix.*'} = 0;
Вариант В: Изменить время обновлений
# Изменить время с 6 утра на 3 ночи
sudo systemctl edit apt-daily-upgrade.timer
[Timer]
OnCalendar=
OnCalendar=03:00
✅ Наше решение: Выбрали вариант А - полное отключение автообновлений на сервере мониторинга. Обновления выполняем вручную по выходным с предварительным бекапом.
📋 Команды для диагностики (памятка)
1. Проверить автообновления:
# Проверить таймеры
systemctl list-timers | grep -i apt
# Проверить конфигурацию
cat /etc/apt/apt.conf.d/20auto-upgrades
cat /etc/apt/apt.conf.d/50unattended-upgrades | grep -i "unattended"
# Проверить логи
cat /var/log/unattended-upgrades/unattended-upgrades.log | tail -20
2. Проверить needrestart:
# Установлен ли needrestart?
dpkg -l | grep needrestart
# Проверить конфигурацию
cat /etc/needrestart/needrestart.conf | grep -E "(restart|override)"
# Логи needrestart
cat /var/log/needrestart.log 2>/dev/null
3. Найти причину остановки службы:
# Логи за конкретное время
sudo journalctl --since "06:15" --until "06:25" --no-pager
# Или для конкретной службы
sudo journalctl -u mariadb --since "yesterday" --until "now" --no-pager
🎓 Выводы
- Automatic updates ≠ Zero downtime - автообновления не дружат с бесперебойной работой
- Мониторинг должен мониторить сам себя - но он не может, если ОС его "убивает"
- Логи - лучший детектив -
journalctlпоказал всю цепочку событий - Время имеет значение - проблемы в 6 утра намекают на запланированные задачи
- Для production-серверов лучше ручные обновления с планом отката
👨💻 Рекомендация: На серверах критичной инфраструктуры (мониторинг, базы данных, балансировщики) отключайте автообновления. Устанавливайте обновления безопасности вручную в запланированные окна обслуживания.
Комментарии
Пока нет комментариев. Будьте первым!