Comment configurer les notifications Slack pour un espace disque faible sur votre serveur
Vous voulez probablement savoir quand votre serveur manque d'espace disque. Une solution simple consiste à configurer un travail cron pour qu'il s'exécute quotidiennement et à vous envoyer des notifications via Slack en cas de problème.
Sommaire
Obtenez de l'espace disque avec la commande df
La commande pour afficher l'espace disque sous Linux est df -h
(pour une sortie dans un format lisible par l'homme):
Cela répertorie chaque système de fichiers monté, la taille du disque physique et la quantité utilisée.
Pour restreindre la sortie à un système de fichiers spécifique (dans ce cas, root), vous pouvez exécuter df /
. Cependant, cela renvoie la ligne d'en-tête, vous pouvez donc filtrer cela avec grep
:
Sélectionnez ensuite la cinquième colonne (le pourcentage) avec awk
et supprimez le symbole de pourcentage avec sed
. Cela vous donne une commande qui renvoie un nombre représentant la quantité de votre disque principal qui est pleine:
df / | grep / | awk '{ print $5}' | sed 's/%//g'
Qui, dans ce cas, retournerait "39
". Si vous souhaitez modifier le disque surveillé par cette commande, vous devez modifier le premier df
déclaration.
Configurer les notifications de manque de ligne de commande
Le moyen le plus simple de faire fonctionner les notifications Slack est d'utiliser les webhooks. Les webhooks vous permettent d'envoyer des notifications sous forme de requêtes POST à une URL sans avoir à gérer les utilisateurs de robots ou OAuth. Vous pouvez formater les messages au format JSON et les poster en utilisant curl
.
À partir du portail API de Slack, créez une nouvelle application, sélectionnez votre espace de travail auquel l'ajouter et donnez-lui un nom. C'est ce qui apparaîtra quand il vous enverra un message, alors choisissez quelque chose d'intéressant.
Une fois que vous avez votre application, recherchez l'onglet «Webhooks entrants» sous «Ajouter des fonctionnalités et des fonctionnalités».
Cela vous permettra de créer un nouveau webhook, et vous devrez choisir sur quelle chaîne il doit publier. Vous pouvez créer un nouveau canal pour les notifications de robots ou l'ajouter à vos propres DM.
Une fois que vous avez l'URL, copiez l'exemple de demande pour vérifier qu'il fonctionne. Vous devriez voir "Hello World!" dans le canal que vous avez sélectionné. Si c'est le cas, Slack est prêt à partir.
Mettre tous ensemble
Pour que votre serveur vous avertisse, vous allez créer un script que vous pouvez exécuter quotidiennement cron
emploi. Voici le shell du script, moins la commande de notification:
#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if ( "$CURRENT" -gt "$THRESHOLD" ) ; then fi
Ce script définit deux variables, CURRENT
(à la sortie du df
commande d'en haut) et THRESHOLD
(à une valeur que vous pouvez configurer). Il vérifie ensuite si la valeur actuelle est supérieure au seuil et exécute une commande si elle l'est.
Vous pouvez définir la notification comme vous le souhaitez, mais voici un exemple, sans inclure l'URL du webhook, que vous devrez coller à la fin (aucun indicateur supplémentaire requis):
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}"
Cela enverra une notification bien formatée au canal désigné de votre webhook, y compris le nom d'hôte du serveur et la capacité actuelle du disque.
Vous pouvez coller cette commande dans le if
déclaration du script ci-dessus, faisant en sorte que le tout se réunisse comme suit:
#!/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
Enregistrez-le sous diskspace.sh
dans votre répertoire personnel et assurez-vous qu'il dispose des autorisations d'exécution avec chmod +x diskpace.sh
. Ouvrez votre crontab avec crontab -e
et ajoutez la ligne suivante à la fin:
0 * * * * ~/diskspace.sh
Cela exécutera votre script toutes les heures pour vérifier si votre disque est plein. Mais vous ne recevrez des notifications que s'il est plein, vous pouvez donc tester si le script fonctionne en définissant THRESHOLD
en dessous de l'utilisation actuelle du disque et en l'exécutant manuellement.
Pour des notifications plus détaillées, vous pouvez demander au script de vous envoyer les résultats de df -h
, bien formaté dans une boîte de code, juste en mettant à jour le curl
déclaration:
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity.n ```$(df -h)``` "}"
Qui apparaîtra dans Slack comme:
Étant donné que la commande exécutée par le script peut être tout ce que vous souhaitez, vous pouvez également configurer les notifications par courrier électronique à l'aide d'un gestionnaire de messagerie comme Postfix ou de tout autre flux prenant en charge les webhooks.