Категории

Почему Zabbix "умирал" каждую ночь в 6:20

05.02.2026 | Статья из категории: Linux

Расследование загадочного падения мониторинга по расписанию и как мы нашли неожиданного виновника.

🎭 Сценарий

На сервере Zabbix периодически появлялась ошибка:

Database error: No such file or directory

Сервис мониторинга переставал работать, хотя все службы были запущены. Особенность: проблема возникала примерно в 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
        
Находка #1

MariaDB не "падала" - её останавливали корректно. Кто и зачем?

🕵️ Шаг 2: Расследование по времени

Смотрим логи вокруг 6:20 утра:

sudo journalctl --since "06:00" --until "06:30"
06:20:01 Запуск apt-daily-upgrade.service
06:20:24 Начало остановки ВСЕХ сервисов
06:20:34 MariaDB полностью остановлена
Находка #2

apt-daily-upgrade.service запускается в 6:20 и начинает останавливать службы! Это автоматические обновления Ubuntu.

🎯 Шаг 3: Понимание механизма

Как это работает:

  1. unattended-upgrades обновляет пакеты Ubuntu
  2. needrestart проверяет, какие процессы используют обновлённые библиотеки
  3. Если процесс использует старую версию библиотеки (например, libc6) - служба перезапускается
  4. MariaDB, использующая обновлённые библиотеки, получает сигнал остановки
  5. 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
        

🎓 Выводы

👨‍💻 Рекомендация: На серверах критичной инфраструктуры (мониторинг, базы данных, балансировщики) отключайте автообновления. Устанавливайте обновления безопасности вручную в запланированные окна обслуживания.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA