Скрипт для мониторинга использования диска и отправки оповещения, если оно превышает 80 %

Скрипт для мониторинга использования диска и отправки оповещения, если оно превышает 80 %

Если вы когда-либо использовали Linux в рабочей среде или хотя бы просто держали у себя домашний сервер, то знаете, что нехватка места на диске — одна из самых неприятных проблем. Внезапно ваши приложения перестают работать, базы данных не записывают новые данные, а файлы журналов заполняются как снежный ком.

Хорошая новость заключается в том, что Linux позволяет с удивительной лёгкостью отслеживать использование диска и выявлять проблемы до того, как они возникнут. Всё, что вам нужно, — это небольшой скрипт, немного логики и, возможно, оповещение по электронной почте (или сообщение в вашем канале Slack, если вам так больше нравится).

В этой статье мы создадим простой скрипт, который будет проверять использование вашего диска и отправлять уведомление, если оно превысит 80 %.

 

Шаг 1. Проверьте использование диска в Linux

Прежде чем писать сценарий, вам нужно узнать, сколько места на диске занимает ваша система, с помощью команды df.

df -h

 

Флаг -h означает «human-readable», поэтому вместо отображения необработанных блоков данных он форматирует вывод в ГБ и МБ, что гораздо проще для понимания.

В приведённом выше примере корневой раздел / (/dev/sda1) находится по адресу 45%, что совершенно нормально, но как только он начинает выходить за пределы 80%, это становится тревожным сигналом: значит, место заканчивается.

 

Шаг 2. Создайте скрипт для мониторинга использования диска

Теперь, когда вы знаете, как вручную проверять использование диска, давайте автоматизируем этот процесс с помощью сценария оболочки. Сценарии отлично подходят для таких задач, поскольку позволяют объединять команды, которые мы обычно выполняем, с помощью небольшой логики.

Вот очень простой скрипт для мониторинга корневого раздела (/):

#!/bin/bash

# Установка порогового значения (в процентах) 
THRESHOLD=80

# Извлечение процента использования корневой файловой системы
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# Сравнение использования с пороговым значением
if [ "$USAGE" -ge "$THRESHOLD" ]; then
 echo "Предупреждение: использование диска составляет ${USAGE}% на $(hostname)" | mail -s "Предупреждение о диске: $(hostname)" user@example.com
fi

 

Читать  5 практических примеров команды chgrp в Linux

Давайте разберёмся, что здесь происходит:

  • THRESHOLD=80 → Это тот предел, который нас интересует. Всё, что выше, слишком рискованно.
  • df -h / → Проверяется только корневая файловая система.
  • awk 'NR==2 {print $5}' → Из вывода df извлекается столбец «Use%».
  • sed 's/%//' → Убирает знак %, чтобы мы могли рассматривать его как число.
  • Блок if → Если использование диска превышает пороговое значение, срабатывает оповещение.

 

Сейчас скрипт отправляет электронное письмо с помощью команды mail. Если вы не настроили электронную почту в своей системе, не волнуйтесь, я покажу вам, как это сделать.

 

Шаг 3. Мониторинг использования всех разделов диска

Большинство серверов не используют один раздел, а разбивают их на несколько, например //home/var, или даже /data. Если вы следите только за корневым разделом (/), то рискуете упустить из виду критические проблемы в других разделах. Например, если /var заполнится логами, ваши приложения могут перестать работать, хотя в / ещё много свободного места.

Вот немного улучшенная версия, которая проверяет все подключённые файловые системы:

#!/bin/bash

THRESHOLD=80

# Перебираем все файловые системы, перечисленные в df
df -h | grep '^/dev/' | while read line; do
    USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
    PART=$(echo $line | awk '{print $6}')

 if [ "$USAGE" -ge "$THRESHOLD" ]; then
 echo "Предупреждение: раздел $PART заполнен на ${USAGE}% на $(hostname)" | mail -s "Оповещение о состоянии диска: $(hostname)" user@example.com
 fi
done

 

Теперь вместо того, чтобы проверять только /, он будет проверять каждую файловую систему в /dev/ и, если какой-либо раздел пересечёт границу 80%, вы получите электронное письмо с предупреждением.

Читать  Расширение команды Bash

 

Шаг 4. Автоматизация скрипта с помощью Cron

Cron — это простой сервис планирования в Linux, который может запускать команды в фиксированное время или через определённые промежутки времени. С его помощью можно настроить автоматический запуск скрипта для мониторинга диска, например, каждый час.

Чтобы настроить его, откройте файл crontab с помощью:

crontab -e

 

Добавьте эту строку внизу:

0 * * * * /путь/к/файлу_проверки_диска.sh

 

Это означает:

  • 0 → запустите в начале часа.
  • * * * * → каждый час, каждый день.
  • /path/to/disk_check.sh → замените это на фактическое расположение вашего скрипта.

 

Сохраните и выйдите, а cron позаботится обо всём остальном. С этого момента ваш скрипт будет в фоновом режиме проверять использование диска и предупреждать вас, если ситуация ухудшится.

 

Шаг 5. Тестирование скрипта

Прежде чем полагаться на этот скрипт, стоит его протестировать. В конце концов, не стоит ждать, пока ваш диск заполнится на 80 %, чтобы проверить, работает ли ваша система оповещений.

Самый простой способ проверить — временно снизить порог:

THRESHOLD=1

 

Таким образом, скрипт почти наверняка сразу же выдаст предупреждение, поскольку большинство разделов заполнены как минимум на 1% %. Как только вы убедитесь, что электронная почта или журналы работают, измените значение на 80.

Если вы не готовы настраивать электронную почту, вы можете заменить команду mail на что-то более простое, например:

echo "Предупреждение: раздел $PART используется на ${USAGE}% на $(hostname)"

 

Это просто выведет предупреждение на ваш терминал, что полезно для быстрой отладки.

 

Шаг 6. Настройка уведомлений по электронной почте

Наш скрипт использует команду mail для отправки оповещений, но этот инструмент не всегда доступен по умолчанию. Сначала вам нужно будет его установить:

sudo apt install mailutils [В Debian]
sudo yum install mailx [В RHEL]

 

Читать  Влияние цифровизации, автоматизации и искусственного интеллекта на интеллектуальную собственность

После установки убедитесь, что ваш сервер действительно может отправлять электронные письма. Для этого может потребоваться дополнительная настройка, например PostfixGmail SMTP или сторонний сервис, например SendGrid.

Если вы не хотите сейчас работать с электронной почтой, вы всё равно можете использовать этот скрипт, записывая оповещения в файл:

echo "Предупреждение об использовании диска: $PART, $USAGE%" >> /var/log/disk_alert.log

 

Таким образом, вы сможете проверить журнал позже или использовать следующую команду для просмотра оповещений в режиме реального времени.

tail -f /var/log/disk_alert.log

 

Шаг 7. Когда стоит выйти за рамки сценариев командной оболочки

Скрипты на языке Shell отлично подходят для обучения и часто оказываются достаточными для одного сервера или небольшого проекта, но если у вас несколько серверов или вам нужен более детальный мониторинг, вам, вероятно, стоит перейти на специализированные инструменты мониторинга.

  • Nagios → Одна из старейших и наиболее надёжных систем мониторинга.
  • Zabbix → Подходит, если вам нужны информационные панели, графики и централизованное управление для мониторинга множества серверов.
  • Prometheus + Grafana → Современная система, в которой Prometheus собирает метрики, а Grafana создает красивые информационные панели для их визуализации.

 

Выводы

С помощью всего нескольких строк кода вы создали простую систему мониторинга дисков, которая следит за вашими разделами и предупреждает вас о возможных проблемах.

Установив пороговое значение, добавив немного логики и настроив расписание с помощью cron, вы автоматизируете задачу, которая в противном случае требовала бы постоянной ручной проверки. Это значит, что будет меньше неожиданностей, сбоев и поводов для беспокойства.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала