Настройка мониторинга резервных копий в TrueNAS: Email и Telegram-уведомления в 2026 году | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Настройка мониторинга резервных копий в TrueNAS: Email и Telegram-уведомления в 2026 году

29 апреля 2026 9 мин. чтения

Встроенная система уведомлений TrueNAS сообщает только факт успешного или неудачного завершения задачи резервного копирования. Вы получаете письмо «Задача завершена», но не знаете, заняло это 5 минут или 5 часов, передался ли гигабайт данных или ничего. Такой подход создает риски: можно пропустить медленную деградацию скорости репликации, указывающую на проблемы с дисками или сетью, или не заметить сбой Cloud Sync из-за исчерпания квоты в облаке, о котором система не сообщает явно. Этот гайд предлагает два решения: быструю настройку базовых Email-оповещений и создание продвинутой системы мониторинга с детализированными алертами в Telegram или Slack через Cron и shell-скрипты. Все инструкции проверены на актуальных версиях TrueNAS CORE и SCALE 2026 года.

Почему встроенных уведомлений TrueNAS недостаточно для мониторинга бэкапов

Интерфейс TrueNAS (GUI) отправляет оповещения только о факте успеха или сбоя задачи репликации или Cloud Sync. В уведомлении отсутствуют ключевые метрики: время начала и окончания операции, точное имя выполненной задачи, объем переданных или измененных данных. Это ограничивает возможность proactive monitoring - упреждающего реагирования на проблемы. Вы не можете быстро оценить эффективность бэкапа или выявить аномалии в его поведении до того, как они приведут к критическому сбою.

Что вы теряете без детального мониторинга

Без детализированных алертов вы рискуете столкнуться со сценариями, которые стандартная система не отследит. Например, репликация может начать выполняться в 10 раз дольше из-за деградации SSD или проблем с сетевой картой. TrueNAS отметит задачу как успешную, но вы пропустите важный сигнал. Другой пример: задача Cloud Sync может тихо завершиться с ошибкой из-за изменения политик доступа в облачном хранилище (например, S3), и в логах TrueNAS это будет, но в вашу почту придет лишь общее «сбой». При работе с десятком задач резервного копирования становится невозможно быстро определить, какая именно завершилась ошибкой, не углубляясь в логи. Принцип наблюдаемости (observability) инфраструктуры требует, чтобы мониторинг давал не просто бинарный статус, а контекст для анализа.

Базовый уровень: настройка Email-уведомлений через SMTP сервер TrueNAS

Этот метод дает быстрый старт и обеспечивает минимально необходимый уровень информирования. Он работает во всех актуальных версиях TrueNAS CORE и SCALE 2024-2026 гг. Настройка выполняется через веб-интерфейс в разделе System Settings -> Email.

Пошаговая инструкция для Gmail и Яндекс.Почты

Для популярных почтовых сервисов используйте следующие проверенные параметры. Для Gmail и Яндекса необходимо создать «Пароль для приложений» в настройках безопасности вашего аккаунта, а не использовать основной пароль.

Параметр Значение для Gmail Значение для Яндекс.Почты
SMTP-сервер smtp.gmail.com smtp.yandex.ru
Порт 587 465
Шифрование STARTTLS SSL/TLS
Имя пользователя Ваш полный email Ваш полный email
Пароль Пароль для приложений Пароль для приложений
Адрес отправителя Ваш email Ваш email

После заполнения полей нажмите Save, затем Send Test Mail, чтобы проверить отправку. Далее в разделе System Settings -> Alert Services убедитесь, что для сервиса Email указан правильный адрес получателя.

Тестирование и диагностика проблем с отправкой

Если тестовое письмо не приходит, проверьте соединение из командной строки TrueNAS. Подключитесь по SSH и выполните команду, используя, например, swaks (если установлен) или telnet для проверки порта:

telnet smtp.gmail.com 587

Частые ошибки и их решения:

  • «Authentication Failed»: Убедитесь, что используется пароль для приложений, а не основной пароль аккаунта. Проверьте, не заблокирован ли доступ «ненадежным приложениям» в настройках безопасности почтового сервиса (для Gmail эту опцию нужно включить).
  • «Connection refused»: Проверьте, не блокирует ли исходящие соединения на порты 587 или 465 межсетевой экран или провайдер. Убедитесь в правильности имени SMTP-сервера.

После успешной настройки добавьте адрес отправителя (ваш TrueNAS) в белый список или список контактов почтового клиента, чтобы письма не попадали в спам.

Продвинутый мониторинг: детальные алерты в Telegram и Slack через Cron и скрипты

Этот метод дает полный контроль над форматом и содержанием уведомлений. Архитектура решения: задача резервного копирования выполняется по расписанию → после ее завершения Cron запускает shell-скрипт → скрипт парсит статус и логи задачи, формирует сообщение с деталями и отправляет его через API мессенджера. Вы получаете информацию о времени выполнения, объеме переданных данных и точном статусе.

Создание Telegram-бота и получение ключа API

Первым шагом создайте бота для отправки сообщений:

  1. Откройте Telegram и найдите @BotFather.
  2. Отправьте команду /newbot и следуйте инструкциям: укажите имя бота и его username (должен заканчиваться на bot, например, my_nas_monitor_bot).
  3. После создания BotFather предоставит API-токен. Сохраните его в безопасном месте.
  4. Создайте канал или группу в Telegram, куда бот будет отправлять сообщения. Добавьте созданного бота в этот чат как участника.
  5. Чтобы получить chat_id, отправьте любое сообщение в чат. Затем выполните запрос в браузере, подставив ваш токен: https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates. В ответе JSON найдите значение id внутри объекта chat.

Токен и chat_id - это конфиденциальные данные. Не храните их в скрипте открытым текстом.

Готовый shell-скрипт для мониторинга задач репликации

Создайте файл, например, /mnt/pool/scripts/check_replication.sh, и скопируйте в него приведенный ниже код. Этот скрипт находит последнюю выполненную задачу репликации, извлекает ее детали и отправляет сводку в Telegram.

#!/bin/bash
# Скрипт для проверки статуса последней задачи репликации и отправки уведомления в Telegram

# Конфигурация (вынесите в отдельный файл или переменные окружения для безопасности)
TELEGRAM_BOT_TOKEN="ВАШ_ТОКЕН_BOT"
TELEGRAM_CHAT_ID="ВАШ_CHAT_ID"

# Функция отправки сообщения в Telegram
send_telegram_message() {
    local MESSAGE="$1"
    curl -s -X POST \
        -H 'Content-Type: application/json' \
        -d "{\"chat_id\": \"$TELEGRAM_CHAT_ID\", \"text\": \"$MESSAGE\", \"parse_mode\": \"HTML\"}" \
        "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" > /dev/null
}

# 1. Получаем список задач репликации и находим ID последней выполненной
LAST_TASK_JSON=$(midclt call replication.query | jq '.[] | select(.state=="FINISHED") | select(.job!=null) | {id, job: .job.id, state, snapshot: .snapshot, end_time: .job.time_finished} | select(.end_time!=null)' | jq -s 'sort_by(.end_time) | last')

# Если задачи не найдены, выходим
if [ -z "$LAST_TASK_JSON" ] || [ "$LAST_TASK_JSON" = "null" ]; then
    send_telegram_message "⚠️ Мониторинг TrueNAS\nНе найдено завершенных задач репликации."
    exit 0
fi

# 2. Парсим данные из JSON
TASK_ID=$(echo "$LAST_TASK_JSON" | jq -r '.id')
JOB_ID=$(echo "$LAST_TASK_JSON" | jq -r '.job')
TASK_STATE=$(echo "$LAST_TASK_JSON" | jq -r '.state')
SNAPSHOT=$(echo "$LAST_TASK_JSON" | jq -r '.snapshot')
END_TIME=$(echo "$LAST_TASK_JSON" | jq -r '.end_time')

# 3. Получаем детали задачи по ее ID для определения имени и объема
TASK_DETAILS=$(midclt call replication.get_instance "$TASK_ID")
TASK_NAME=$(echo "$TASK_DETAILS" | jq -r '.name')
SOURCE_DATASET=$(echo "$TASK_DETAILS" | jq -r '.source_datasets[0]')

# 4. Пытаемся получить размер переданных данных из свойств снапшота (пример)
SNAPSHOT_SIZE="N/A"
if [ "$SNAPSHOT" != "null" ]; then
    # Это упрощенный пример. Реальный размер изменений можно получить, сравнивая снапшоты.
    SNAPSHOT_SIZE=$(zfs list -t snapshot -o used "$SOURCE_DATASET@$SNAPSHOT" 2>/dev/null | tail -n1)
fi

# 5. Формируем читаемое сообщение
if [ "$TASK_STATE" = "FINISHED" ]; then
    STATUS_EMOJI="✅"
    STATUS_TEXT="Успешно завершена"
else
    STATUS_EMOJI="❌"
    STATUS_TEXT="Завершена со сбоем"
fi

MESSAGE="$STATUS_EMOJI Мониторинг репликации TrueNAS

Задача: $TASK_NAME
Источник: $SOURCE_DATASET
Статус: $STATUS_TEXT
Снапшот: $SNAPSHOT
Время окончания: $END_TIME
Размер снапшота: $SNAPSHOT_SIZE"

# 6. Отправляем сообщение
send_telegram_message "$MESSAGE"

exit 0

Перед использованием установите утилиту jq для парсинга JSON, если она отсутствует: pkg install jq (TrueNAS CORE) или apt-get install jq (TrueNAS SCALE). Дайте скрипту права на выполнение: chmod +x /mnt/pool/scripts/check_replication.sh.

Адаптация скрипта для задач Cloud Sync

Логика для Cloud Sync похожа, но используются другие команды midclt. Основное изменение - в части получения списка задач. Замените строку получения LAST_TASK_JSON на вариант для Cloud Sync:

LAST_TASK_JSON=$(midclt call cloudsync.query | jq '.[] | select(.state=="SUCCESS" or .state=="FAILED") | {id, job: .job.id, state, direction, time_finished: .job.time_finished} | select(.time_finished!=null)' | jq -s 'sort_by(.time_finished) | last')

Дополнительно можно получить имя задачи (.description) и направление синхронизации (.direction). Вы можете создать универсальный скрипт или два отдельных для разных типов задач.

Настройка Cron задачи в TrueNAS для автоматического запуска скрипта

Чтобы скрипт запускался автоматически после завершения задач резервного копирования, создайте задание в планировщике:

  1. В веб-интерфейсе TrueNAS перейдите в Tasks -> Cron Jobs.
  2. Нажмите Add.
  3. Заполните поля:
    • Description: «Мониторинг репликации».
    • Command: Полный путь к вашему скрипту, например, /mnt/pool/scripts/check_replication.sh.
    • User: root.
    • Schedule: Рассчитайте время. Если ваша репликация запускается ежедневно в 02:00 и длится примерно час, установите время запуска Cron на 03:10. Используйте формат Minute Hour Day Month Weekday (например, 10 3 * * * для ежедневного запуска в 03:10).
  4. Нажмите Save.

Проверьте работу: сначала запустите скрипт вручную из командной строки, убедитесь, что сообщение приходит. Затем дождитесь срабатывания Cron. Для мониторинга нескольких задач можно создать несколько Cron-заданий с разным временем или один скрипт, который проверяет все задачи по очереди.

Сравнение методов: когда использовать Email, а когда - Telegram/Slack

Выбор метода зависит от ваших задач, инфраструктуры и предпочтений команды.

  • Сложность настройки: Email через GUI TrueNAS - минимальная (5 минут). Telegram/Slack скрипты - средняя (требует создания бота, написания и отладки скрипта).
  • Информативность: Email - низкая (только статус). Telegram/Slack - высокая (статус, время, объем данных, имя задачи, возможны ссылки на логи).
  • Надежность доставки: Email - зависит от почтового сервиса и настроек спама. Telegram/Slack - высокая, сообщения доставляются практически мгновенно в push-канал.
  • Интеграция в рабочие процессы: Email - подходит для аудита и лог-архива. Telegram/Slack - идеальны для оперативного реагирования команды в общих чатах, можно настроить форматирование, тегирование ответственных.
  • Безопасность: Оба метода требуют безопасного хранения учетных данных (паролей SMTP, токенов ботов). Для критически важных систем рекомендуется использовать внутренний SMTP-сервер или корпоративный мессенджер с контролем доступа.

Рекомендация: Используйте комбинированный подход. Настройте базовые Email-уведомления в TrueNAS как обязательный канал для критических системных алертов (состояние дисков, сети). Для мониторинга конкретных бизнес-процессов, таких как репликация и Cloud Sync, внедрите детализированные алерты в Telegram или Slack. Это обеспечит и надежность, и удобство оперативной работы. Для комплексной автоматизации подобных задач вам может пригодиться наш практический гайд по автоматизации инфраструктуры.

Отладка и лучшие практики надежной системы мониторинга

Следуйте этим правилам, чтобы ваша система мониторинга была устойчивой и полезной.

  1. Тестируйте вручную. Перед добавлением в Cron всегда запускайте скрипт из командной строки, проверяйте его вывод и факт отправки сообщения.
  2. Добавьте логирование. Модифицируйте скрипт так, чтобы он записывал свои действия и ошибки в файл. Это критически важно для посмертного анализа, если что-то пойдет не так.
    exec >> /var/log/nas_monitor.log 2>&1
    echo "$(date): Скрипт мониторинга запущен"
  3. Реализуйте health check. Настройте отдельную Cron-задачу, которая раз в день отправляет в ваш канал тестовое сообщение «Мониторинг TrueNAS активен». Отсутствие этого сообщения два дня подряд - сигнал о проблеме с самим скриптом или сервером.
  4. Настройте алерты на отсутствие уведомлений. Это продвинутая практика. Можно создать простой скрипт, который проверяет, появлялись ли в логах записи об успешной отправке уведомлений за последние N часов. Если нет - отправляет критическое оповещение по другому, более приоритетному каналу.
  5. Безопасно храните конфиденциальные данные. Не оставляйте токены и пароли в теле скрипта. Используйте переменные окружения (настройте в System Settings -> Advanced -> Environment Variables в TrueNAS SCALE) или вынесите настройки в отдельный конфигурационный файл с ограниченными правами доступа (chmod 600).
  6. Планируйте актуализацию. При обновлении TrueNAS проверяйте, не изменились ли API (midclt call) или структура данных задач. Периодически пересматривайте логи и формат сообщений на предмет полезности.

Настройка детального мониторинга - это вклад в отказоустойчивость вашей инфраструктуры хранения. Комбинируя встроенные оповещения TrueNAS с кастомными скриптами, вы получаете полную наблюдаемость над процессами резервного копирования. Это позволяет не просто реагировать на сбои, а proactively управлять здоровьем системы. Для более глубокой интеграции мониторинга и автоматизации администрирования TrueNAS извне изучите возможности REST API TrueNAS SCALE. Если же вы только планируете стратегию резервного копирования, основы настройки репликации подробно разобраны в отдельном руководстве.

Поделиться:
Сохранить гайд? В закладки браузера