Как установить и настроить мониторинг диска на VPS
Заполненный под ноль диск — одна из самых обидных причин падения сервера: базы данных встают, логи не пишутся, сайт отдаёт ошибки, а починка среди ночи превращается в панику. Мониторинг диска предупреждает об этом заранее — вы получаете алерт, когда места осталось 15%, а не когда его не осталось совсем. Разберём, как настроить полный контроль диска на VPS: свободное место, inode, здоровье накопителя и автоматические уведомления.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что именно нужно мониторить
Мониторинг диска — это не только «сколько свободных гигабайт». За словом «диск кончился» скрываются три разные проблемы, и все три нужно держать под контролем.
Первое — свободное место. Самое очевидное: раздел заполняется логами, дампами, кэшами, загрузками. Второе — inode: это счётчик файлов, и он может кончиться раньше места. Миллионы мелких файлов (сессии, кэш, письма) исчерпают inode при формально свободных гигабайтах, и система будет ругаться «no space left», хотя df -h покажет место. Третье — здоровье самого накопителя: растущие ошибки чтения и переназначенные секторы предупреждают о скорой смерти диска.
Полноценный мониторинг закрывает все три: следит за процентом занятого места, за расходом inode и за SMART-показателями. Ниже соберём такой контроль из штатных инструментов Linux и свяжем с алертами в Telegram, чтобы сервер сам предупреждал о проблеме.
Требования и выбор сервера
Мониторинг диска не требует ресурсов — это лёгкие штатные утилиты и скрипт по расписанию. Подойдёт любой VPS. Важнее заложить адекватный объём диска под задачу и держать запас: сервер, который постоянно работает на 95% заполнения, — это мина замедленного действия.
Для российских проектов с хранением данных берите RU-локацию, для зарубежных сервисов — US или UK. MAATRIX даёт VPS в нужной локации с гибким диском и оплатой картами российских банков, СБП, криптовалютой или токеном MAAT — иностранная карта не нужна. Начнём с ручной диагностики, чтобы понимать, что автоматизируем.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под мониторингРучная диагностика: df, du, ncdu
Три команды, которые должен знать каждый. Свободное место по разделам показывает df:
df -h
Колонка Use% — главный индикатор. Чтобы проверить inode, добавьте флаг -i:
df -i
Если IUse% близок к 100%, а места вроде хватает — проблема именно в inode. Найти, что занимает место, помогает du, а удобнее всего интерактивный ncdu:
apt install -y ncdu
ncdu /
Он покажет дерево каталогов, отсортированное по размеру, — за минуту видно, где осел мусор. Чаще всего это /var/log, старые ядра, кэш пакетов или забытые дампы базы. Эти три инструмента — основа: сначала научитесь смотреть руками, потом автоматизируйте.
Стоит понимать разницу между ними, чтобы не путаться в показаниях. df смотрит на файловую систему с точки зрения ядра: сколько блоков занято и свободно на разделе в целом. du идёт по дереву каталогов и складывает размеры файлов, которые видит. В норме их цифры близки, но расходятся в двух случаях — когда есть удалённые файлы, всё ещё открытые процессами, и когда поверх каталога примонтирована другая файловая система. Держите это в голове: если df и du спорят, виноват почти всегда не диск, а одна из этих двух ситуаций, и разбор этого расхождения — половина всей диагностики диска.
Здоровье накопителя через SMART
Свободное место — это про сегодня, а SMART — про завтра: он предсказывает отказ диска до того, как тот умрёт. Поставьте smartmontools:
apt install -y smartmontools
smartctl -a /dev/sda
На VPS с виртуальным диском SMART может быть недоступен — это нормально, гипервизор скрывает физический носитель. Но на выделенном сервере или VPS с проброшенным диском обращайте внимание на несколько атрибутов: Reallocated_Sector_Ct (переназначенные секторы), Current_Pending_Sector (сомнительные секторы) и Offline_Uncorrectable. Рост этих значений — сигнал готовить замену диска и проверять бэкапы. Запустите фоновый тест здоровья:
smartctl -t short /dev/sda
Автоматический скрипт мониторинга
Соберём скрипт, который проверяет место и inode и шлёт алерт в Telegram при превышении порога. Предполагаем, что у вас уже есть бот (токен и chat_id). Создайте /usr/local/bin/disk-check.sh:
#!/bin/bash
TOKEN="ВАШ_ТОКЕН"; CHAT="ВАШ_CHAT_ID"; LIMIT=85
send() { curl -s "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT}" -d text="⚠️ $(hostname): Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под мониторинг
Ручная диагностика: df, du, ncdu
Три команды, которые должен знать каждый. Свободное место по разделам показывает df:
df -h
Колонка Use% — главный индикатор. Чтобы проверить inode, добавьте флаг -i:
df -i
Если IUse% близок к 100%, а места вроде хватает — проблема именно в inode. Найти, что занимает место, помогает du, а удобнее всего интерактивный ncdu:
apt install -y ncdu
ncdu /
Он покажет дерево каталогов, отсортированное по размеру, — за минуту видно, где осел мусор. Чаще всего это /var/log, старые ядра, кэш пакетов или забытые дампы базы. Эти три инструмента — основа: сначала научитесь смотреть руками, потом автоматизируйте.
Стоит понимать разницу между ними, чтобы не путаться в показаниях. df смотрит на файловую систему с точки зрения ядра: сколько блоков занято и свободно на разделе в целом. du идёт по дереву каталогов и складывает размеры файлов, которые видит. В норме их цифры близки, но расходятся в двух случаях — когда есть удалённые файлы, всё ещё открытые процессами, и когда поверх каталога примонтирована другая файловая система. Держите это в голове: если df и du спорят, виноват почти всегда не диск, а одна из этих двух ситуаций, и разбор этого расхождения — половина всей диагностики диска.
Здоровье накопителя через SMART
Свободное место — это про сегодня, а SMART — про завтра: он предсказывает отказ диска до того, как тот умрёт. Поставьте smartmontools:
apt install -y smartmontools
smartctl -a /dev/sda
На VPS с виртуальным диском SMART может быть недоступен — это нормально, гипервизор скрывает физический носитель. Но на выделенном сервере или VPS с проброшенным диском обращайте внимание на несколько атрибутов: Reallocated_Sector_Ct (переназначенные секторы), Current_Pending_Sector (сомнительные секторы) и Offline_Uncorrectable. Рост этих значений — сигнал готовить замену диска и проверять бэкапы. Запустите фоновый тест здоровья:
smartctl -t short /dev/sda
Автоматический скрипт мониторинга
Соберём скрипт, который проверяет место и inode и шлёт алерт в Telegram при превышении порога. Предполагаем, что у вас уже есть бот (токен и chat_id). Создайте /usr/local/bin/disk-check.sh:
#!/bin/bash
TOKEN="ВАШ_ТОКЕН"; CHAT="ВАШ_CHAT_ID"; LIMIT=85
send() { curl -s "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT}" -d text="⚠️ $(hostname): $1" >/dev/null; }
USE=$(df / | awk 'NR==2{print $5}' | tr -d '%')
IUSE=$(df -i / | awk 'NR==2{print $5}' | tr -d '%')
[ "$USE" -ge "$LIMIT" ] && send "диск / заполнен на ${USE}%"
[ "$IUSE" -ge "$LIMIT" ] && send "inode / заполнены на ${IUSE}%"
Сделайте исполняемым и проверьте: chmod +x /usr/local/bin/disk-check.sh && /usr/local/bin/disk-check.sh. Скрипт проверяет и место, и inode — обе частые причины падения. Порог LIMIT=85 даёт запас времени на реакцию.
Почему именно 85, а не 95? Потому что важно не «узнать о полном диске», а «успеть отреагировать до того, как он полон». Между 85% и 100% у вас обычно есть часы или дни, за которые можно спокойно почистить логи, расширить диск или разобраться с источником роста. При пороге 95% этого запаса нет: активный лог или большой дамп проскакивают оставшиеся проценты за минуты, и алерт приходит уже к развалившемуся серверу. Отдельный совет — если разделов несколько (корень, /var, отдельный раздел под данные), проверяйте каждый со своим порогом, потому что заполнение любого из них ломает систему, а один общий порог легко пропустит проблему на маленьком, но критичном разделе.
Запуск по расписанию через cron
Чтобы проверка шла автоматически, добавьте скрипт в cron. Откройте crontab -e и впишите строку — например, проверка каждые 30 минут:
*/30 * * * * /usr/local/bin/disk-check.sh
Теперь сервер сам проверяет диск дважды в час и молчит, пока всё в порядке, а при заполнении выше 85% пишет вам в Telegram. Для полноты добавьте автоматическую гигиену, чтобы диск не заполнялся мусором: ротацию логов (logrotate обычно уже настроен), периодическую очистку кэша пакетов apt clean и удаление старых ядер. Это снижает вероятность самого события.
Если алертов о заполнении становится много, это честный сигнал: диск мал для задачи, пора расширяться. Это нормальный повод перейти на тариф с большим диском, а не бесконечно чистить. У MAATRIX VPS с нужным объёмом диска поднимается за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется, и мониторинг сразу присматривает за местом.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под мониторинг" >/dev/null; }
USE=$(df / | awk 'NR==2{print $5}' | tr -d '%')
IUSE=$(df -i / | awk 'NR==2{print $5}' | tr -d '%')
[ "$USE" -ge "$LIMIT" ] && send "диск / заполнен на ${USE}%"
[ "$IUSE" -ge "$LIMIT" ] && send "inode / заполнены на ${IUSE}%"
Сделайте исполняемым и проверьте: chmod +x /usr/local/bin/disk-check.sh && /usr/local/bin/disk-check.sh. Скрипт проверяет и место, и inode — обе частые причины падения. Порог LIMIT=85 даёт запас времени на реакцию.
Почему именно 85, а не 95? Потому что важно не «узнать о полном диске», а «успеть отреагировать до того, как он полон». Между 85% и 100% у вас обычно есть часы или дни, за которые можно спокойно почистить логи, расширить диск или разобраться с источником роста. При пороге 95% этого запаса нет: активный лог или большой дамп проскакивают оставшиеся проценты за минуты, и алерт приходит уже к развалившемуся серверу. Отдельный совет — если разделов несколько (корень, /var, отдельный раздел под данные), проверяйте каждый со своим порогом, потому что заполнение любого из них ломает систему, а один общий порог легко пропустит проблему на маленьком, но критичном разделе.
Запуск по расписанию через cron
Чтобы проверка шла автоматически, добавьте скрипт в cron. Откройте crontab -e и впишите строку — например, проверка каждые 30 минут:
*/30 * * * * /usr/local/bin/disk-check.sh
Теперь сервер сам проверяет диск дважды в час и молчит, пока всё в порядке, а при заполнении выше 85% пишет вам в Telegram. Для полноты добавьте автоматическую гигиену, чтобы диск не заполнялся мусором: ротацию логов (logrotate обычно уже настроен), периодическую очистку кэша пакетов apt clean и удаление старых ядер. Это снижает вероятность самого события.
Если алертов о заполнении становится много, это честный сигнал: диск мал для задачи, пора расширяться. Это нормальный повод перейти на тариф с большим диском, а не бесконечно чистить. У MAATRIX VPS с нужным объёмом диска поднимается за пару минут, с оплатой картой РФ, СБП или криптой — иностранная карта не требуется, и мониторинг сразу присматривает за местом.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под мониторингОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Почему df показывает место, а система пишет «нет места»?
Скорее всего, кончились inode, а не гигабайты. Проверьте df -i: если IUse% около 100%, проблема в количестве файлов. Ищите каталоги с миллионами мелких файлов и чистите их.
Работает ли SMART на VPS?
На VPS с виртуальным диском SMART часто недоступен, потому что гипервизор скрывает физический носитель — это нормально. На выделенном сервере SMART полностью доступен и предсказывает отказ диска заранее.
Как часто проверять диск?
Для большинства задач достаточно проверки каждые 15–30 минут через cron. Этого хватает, чтобы получить алерт задолго до полного заполнения и успеть отреагировать.
Как оплатить VPS с большим диском из России?
Картой РФ, по СБП, криптовалютой или токеном MAAT. Иностранная карта не нужна, сервер с нужным объёмом поднимается за пару минут.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.