Как настроить слабые уведомления для нехватки дискового пространства на вашем сервере — CloudSavvy IT

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

Получите место на диске с помощью команды df

Команда для просмотра дискового пространства в Linux df -h (для вывода в удобочитаемом формате):

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

Чтобы сузить вывод до определенной файловой системы (в данном случае root), вы можете запустить df /, Тем не менее, это возвращает строку заголовка, так что вы можете отфильтровать это с grep:

Затем выберите пятый столбец (процент) с awkи удалите символ процента с помощью sed, Это дает вам одну команду, которая возвращает число, представляющее, сколько вашего основного диска заполнено:

df / | grep / | awk '{ print $5}' | sed 's/%//g'

Который в этом случае вернется39«. Если вы хотите сменить диск, за которым следит эта команда, вам нужно отредактировать первый df заявление.

Настроить слабые уведомления командной строки

Самый простой способ заставить работать уведомления Slack — это веб-хуки. Webhooks позволяют отправлять уведомления в виде POST-запросов на URL без необходимости управлять пользователями ботов или OAuth. Вы можете форматировать сообщения как JSON и отправлять их, используя curl,

Из Slack’s API порталсоздайте новое приложение, выберите рабочее пространство, в которое вы хотите добавить его, и присвойте ему имя. Это то, что будет отображаться при сообщении вам, так что выберите что-то интересное.

Как только у вас появится приложение, откройте вкладку «Входящие веб-хуки» в разделе «Добавить функции и возможности».

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

Получив URL-адрес, скопируйте образец запроса, чтобы убедиться, что он работает. Вы должны увидеть «Hello World!» на выбранном вами канале. Если это так, Slack — это хорошо.

Собираем все вместе

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

#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=90

if [ "$CURRENT" -gt "$THRESHOLD" ] ; then

fi

Этот скрипт устанавливает две переменные, CURRENT (к выходу df команда сверху) и THRESHOLD (к значению, которое вы можете настроить). Затем он проверяет, превышает ли текущее значение пороговое значение, и запускает команду, если это так.

Вы можете установить уведомление так, как вам нравится, но вот пример — не включая URL-адрес webhook, который вам нужно будет вставить в конце (дополнительный флаг не требуется):

curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}"

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

Вы можете вставить эту команду в if Изложение приведенного выше сценария, заставляющее все это объединиться примерно так:

#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=90

if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}"
fi

Сохранить это как diskspace.sh в вашем домашнем каталоге, и убедитесь, что он имеет разрешения на выполнение с chmod +x diskpace.sh, Откройте свой crontab с crontab -eи добавьте следующую строку в конец:

0 * * * * ~/diskspace.sh

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

Для более подробных уведомлений вы можете сделать так, чтобы скрипт отправлял вам результаты df -h, отформатированный в поле кода, просто путем обновления curl заявление:

curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity.n ```$(df -h)``` "}"

Который будет отображаться в Slack как:

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

Похожие записи

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

Ваш адрес email не будет опубликован.