Контроль свободного места на сервере с помощью скрипта

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

 

#!/bin/bash

# Ящики на которые шлем отчет
mails="admin1@itroad.ru admin2@itroad.ru"

# Создаем массив из рейтинга, наполняя одну переменную разделами, а другую процентом заполнения (убирая с конца символ процента).
F=(echo `df -h | awk '{print $6}' | grep /`)
S=(echo `df -h | awk '{print $5}' | grep % | rev | cut -c 2,3,4 | rev`)

# Считаем кол-во строк с разделами, и наполняем этим числом переменную счетчика.
N=`df -h | awk '{print $5}' | grep -c %`

# Чистим\создаем файл отправки перед циклом.
cat /dev/null >/tmp/df_tmp

# Начинаем перебор массива с 1 элемента до N элемента.
i=1
while [ $i -lt $N ]
do
          # Внутри цикла проверяем первую переменную с процентами, не превысило ли значение 96%
          if [ ${S[$i]} -ge 96 ] <code class="shell plain">&gt;</code><code class="shell plain">/dev/null</code> <code class="shell plain">2&gt;&amp;1</code>; then
                  
                  # Если заполнение раздела 96% или больше, пишем об этом на почту.
                  echo "На разделе ${F[$i]} заканчивается место, занято уже ${S[$i]}%" &gt;&gt;/tmp/df_tmp
          
          # Если процент заполнения всех разделов меньше 96% - выходим.
          fi

# Добавляем к счетчику единицу.
i=$[$i+1]
done

# Если файл не пустой, шлем его на почту, если пустой, выходим.
test -s /tmp/df_tmp &amp;&amp; mutt -s "На разделах сервера `hostname` заканчивается свободное место" $mails &lt;/tmp/df_tmp

exit 0

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

Для меня система мониторинга, это такой здоровенный монстр — кальмар, половина щупалец которого нафиг не нужны, кроме как ингредиент салата. Вот и клепаю свои поделки, которые потом распространяю через Ansible.

Хотя я конечно же не прав — системы мониторинга, наше все!

Смотрите так же:

Контроль свободного места на сервере с помощью скрипта: 1 комментарий

Добавить комментарий

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