Дисковое пространство - один из важнейших ресурсов системы. Постоянный мониторинг его состояния помогает избежать неприятных ситуаций, таких как переполнение разделов и остановка важных процессов. Логирование дискового пространства позволяет своевременно выявлять проблемы и анализировать историю использования.
Почему это важно?
Предотвращение проблем: Заранее узнавайте о нехватке места.
Анализ трендов: Отслеживайте, как быстро растёт использование места.
Автоматизация: Система сама уведомляет о критических ситуациях.
1. Создаём систему логирования дискового пространства. Базовый скрипт для логирования:
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Текущая дата и время
CURRENT_DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Состояние дисков
DISK_USAGE=$(df -h)
# Запись в лог-файл
{
echo "-----"
echo "Дата: $CURRENT_DATE"
echo "$DISK_USAGE"
} >> "$LOG_FILE"
echo "Логирование завершено. Данные записаны в $LOG_FILE"
Вывод в файле /var/log/disk_usage.log:
-----
Дата: 2024-11-05 14:00:00
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
2. Автоматизация через cron. Добавьте скрипт в crontab, чтобы запускать его ежедневно:
crontab -e
Добавьте строку:
0 0 * * * /path/to/disk_logger.sh
Теперь скрипт будет запускаться каждый день в полночь.
3. Уведомления при критическом состоянии. Модифицируем скрипт для отправки уведомлений, если свободного места становится меньше 20%.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
THRESHOLD=20
# Проверка разделов
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" -v threshold="$THRESHOLD" 'NR>1 {gsub("%", "", $5); if ($5 > (100-threshold)) print date, $0}' | while read -r line; do
echo "Критическое состояние диска: $line" >> "$LOG_FILE"
echo "$line" | mail -s "Уведомление: мало места на диске" admin@bashtex.com
done
Если свободного места станет меньше 20%, лог будет дополнен, а администратору отправлено уведомление.
4. Анализ роста использования пространства:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $2, $3, $5}' | tail
Визуализация:
Сохраните данные в CSV для анализа:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $1, $5}' > disk_usage.csv
Затем откройте CSV в Excel или LibreOffice для построения графиков.
Логирование дискового пространства помогает предвидеть и устранять проблемы до того, как они повлияют на работу системы, а также производить различные анализы.
BashTex 📱 #bash #utils