Agence web » Actualités du digital » Comment configurer les notifications Slack pour un espace disque faible sur votre serveur

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.

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 awket 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 -eet 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.

★★★★★