Как настроить 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, или любого другого канала, поддерживающего веб-перехватчики.