🤲 Linux Shell скрипт для мониторинга использования дискового пространства и отправки электронной почты

by itisgood

На рынке доступно множество инструментов для мониторинга систем Linux, и они отправляют электронное письмо, когда система достигнет порогового предела.

Они контролируют все, например, использование ЦП, использование памяти, использование подкачки, использование дискового пространства и многое другое.

Тем не менее, он подходит для малых и больших преприятий.

Подумайте, если у вас всего несколько систем, то какой подход будет лучшим в этом отношении.

Но мы хотим написать скрипт оболочки для достижения этой цели.

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

Когда система достигает заданного порогового значения, она отправит сообщение по электронной почте с соответствующим идентификатором.

В этой статье мы добавили четыре скрипта оболочки, и каждый из них использовался для разных целей.

Позже мы предложим другие скрипты оболочки для мониторинга загрузки процессора, памяти и подкачки.

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

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

# sh /opt/script/disk-usage-alert-old.sh

/dev/mapper/vg_2g-lv_root
test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected
/ 9.8G

Да все правильно.

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

Позже я нашел причины.

Когда вы используете «df -h» или «df -H» в скрипте оболочки для оповещения о дисковом пространстве в системе на основе RHEL 5 и RHEL 6, вы получите сообщение об ошибке как показано выше, потому что вывод не в правильном формате, он показан далее смотрите вывод ниже.

Чтобы преодолеть эту проблему, нам нужно использовать «df -Ph» (выходной формат POSIX), но по умолчанию «df -h» отлично работает в системах на основе RHEL 7.

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_2g-lv_root
                       10G  6.7G  3.4G  67% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             976M   95M  830M  11% /boot
/dev/mapper/vg_2g-lv_home
                      5.0G  4.3G  784M  85% /home
/dev/mapper/vg_2g-lv_tmp
                      4.8G   14M  4.6G   1% /tmp

Метод 1: Скрипт Шелл для мониторинга использования дискового пространства и отправки электронной почты

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

Он отправит электронное письмо, когда система пространство достигнет заданного порогового значения.

В этом примере мы устанавливаем пороговое ограничение в 60% в целях тестирования, и вы можете изменить это ограничение в соответствии с вашими требованиями.

Он будет отправлять несколько писем, если более чем одна файловая система достигнет заданного порогового значения, поскольку скрипт использует цикл.

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

# vi /opt/script/disk-usage-alert.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  echo $output
  used=$(echo $output | awk '{print $1}' | sed s/%//g)
  partition=$(echo $output | awk '{print $2}')
  if [ $used -ge 60 ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" admin@itisgood.ru
  fi
done

Вывод: я получил следующие два оповещения по электронной почте.

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

Наконец добавьте задание cronjob, чтобы автоматизировать его.

Оно будет запускаться каждые 10 минут.

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

Метод 2: Скрипт Linux для мониторинга использования дискового пространства и отправки электронной почты

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

Мы внесли несколько изменений в этот вариант по сравнению с приведенным выше скриптом.

 
# vi /opt/script/disk-usage-alert-1.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  max=60%
  echo $output
  used=$(echo $output | awk '{print $1}')
  partition=$(echo $output | awk '{print $2}')
  if [ ${used%?} -ge ${max%?} ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" admin@itisgood.ru
  fi
done

Вывод: я получил следующие два оповещения по электронной почте.

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

Наконец добавьте задание cronjob, чтобы автоматизировать этот процесс.

Он будет запускаться каждые 10 минут.

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh

Метод 3: Скрипт Linux шелл для мониторинга использования дискового пространства и отправки электронной почты

Я хотел бы поделиться и этим методом.

Так как он работает как charm, и вы получите одно письмо.

Это очень просто и понятно.

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" admin@itisgood.ru

Вывод: я получил одно письмо со всеми оповещениями.

Filesystem                            Size  Used Avail Use Mounted on
/dev/mapper/vg_2g-lv_root              10G  6.7G  3.4G  67 /
/dev/mapper/vg_2g-lv_home             5.0G  4.3G  784M  85 /home

Метод 4: Скрипт оболочки Linux для мониторинга использования дискового пространства определенного раздела и отправки электронной почты

Если кто-то хочет следить за конкретным разделом, вы можете использовать следующий скрипт.

Просто замените имя вашей файловой системы вместо нашей.

# vi /opt/script/disk-usage-alert-2.sh

#!/bin/bash
used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})
max=80%
if [ ${used%?} -ge ${max%?} ]; then
echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" admin@itisgood.ru
fi

Вывод: я получил следующие оповещения по электронной почте.

The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019

Наконец добавьте задание cronjob, чтобы автоматизировать эту задачу.

Он будет запускаться каждые 10 минут.

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh

Примечание. Через 10 минут вы получите оповещение по электронной почте, поскольку запуск скрипта запланирован каждые 10 минут (но это не совсем 10 минут, и это зависит от времени).

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

 

You may also like

Leave a Comment