Назад | Перейти на главную страницу

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

У меня есть сервер ubuntu, и я часто сталкиваюсь с проблемой свободного места, т. Е. Журналы занимают много места на диске. Итак, я хочу, чтобы была применена проверка, чтобы всякий раз, когда на диске меньше 5 ГБ свободного места, я получал уведомление по электронной почте, чтобы я мог удалить журналы. Как я могу это настроить. Нужны ли мне другие приложения?

Ты можешь использовать Nagios для мониторинга и отправки электронной почты. Но, прежде чем настраивать мониторинг, я бы начал с настройки logrotate для периодической ротации файлов журналов.

Подходящая система зависит от того, где вы размещаете свой сервер. Например, если он размещен на AWS, вы можете настроить встроенный в Amazon CloudWatch для мониторинга его работоспособности, а не для развертывания нового решения для мониторинга.

Вы можете использовать две разные стратегии:

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

Для одного сервера решение №1, безусловно, является более быстрым путем. Однако для нескольких серверов и / или для проверки нескольких точек данных (например, использование оперативной памяти, загрузка процессора и т. Д.) Второй вариант, безусловно, предпочтительнее.

На моем сервере Ubuntu у меня есть следующий скрипт в /etc/cron.daily который предупреждает меня по электронной почте, когда /dev/sdc (мой /srv раздел) имеет менее 200 МБ свободного места.

ALERT=200
UNIT=M
PARTITION=/dev/sdc

df -B$UNIT | grep "^$PARTITION" |
while read partition size used free perc mnt ;
do
        free_space=$(echo $free | tr -d $UNIT )
        if [ $free_space -le $ALERT ]; then
                echo "Partition $partition ($mnt) running out of space ($free) on $(hostname) as on $(date)" |
                mail -s "Alert: $mnt almost out of disk space on $(hostname) - $free" root
        fi
done

Изначально это было взято и адаптировано из этого сообщения в блоге на nixCraft. Сохраните это в файл в /etc/cron.hourly от имени пользователя root измените первые 3 строки в соответствии с вашим сервером и потребностями и сделайте файл исполняемым. Если вы хотите, чтобы он выполнялся чаще, сохраните его как скрипт и создайте обычное задание cron.

Обратите внимание, что вам понадобится что-то, обеспечивающее mail команда, обычно из пакетов qmail-run или courier-mta.