Поиск по сайту:

Как настроить Slack-уведомления о нехватке места на диске на вашем сервере


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

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

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

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

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

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

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

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

Настройка Slack-уведомлений командной строки

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

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

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

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

Получив 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-адрес веб-перехватчика, который вам нужно будет вставить в конце (дополнительный флаг не требуется):

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

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

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