Fermer

mars 17, 2025

13 scripts d’automatisation à savoir pour la surveillance et la journalisation DevOps

13 scripts d’automatisation à savoir pour la surveillance et la journalisation DevOps


Introduction

La surveillance et la journalisation sont cruciales pour maintenir un système fiable. Si vous gérez infrastructure cloudmicroservices, serveurs ou pipelines CI / CD, les scripts d’automatisation offrent une base solide et jouent un rôle clé dans la prévention des problèmes de production en fin de soirée

Dans cet article, nous examinerons 13 scripts d’automatisation essentiels que chaque ingénieur DevOps devrait connaître. Ces scripts aideront à suivre les performances du système, à identifier les goulots d’étranglement et à rationaliser la gestion des journaux, ce qui rend votre flux de travail plus efficace.

Ce guide est parfait pour les débutants, mais les professionnels des DevOps expérimentés trouveront également des informations précieuses. Plongeons et découvrons comment ces scripts peuvent améliorer vos opérations avec des applications réelles!

Objectif

Ce blog fournira aux ingénieurs DevOps des scripts d’automatisation essentiels pour améliorer la fiabilité du système, la surveillance des performances et la gestion des journaux. Les équipes DevOps peuvent prévenir les problèmes critiques, réduire les efforts manuels et améliorer l’efficacité opérationnelle en automatisant les tâches clés.

Condition préalable

  • Serveur Linux
  • Familiarité avec les scripts Bash et Python.

1. Surveiller l’espace disque

La sortie de l’espace disque peut provoquer des accidents de base de données, des accidents d’application / serveur, des pipelines de construction échoués ou même une perte de données.

Solution: Un script bash vérifie l’utilisation du disque dans votre serveur et envoie une alerte si l’utilisation dépasse le seuil défini. Dans cet exemple de 80%.

Exemple de script:

#!/bin/bash
THRESHOLD=80
df -h | awk '{if($5+0 > '$THRESHOLD') print $0}'

2. Surveiller l’utilisation du processeur

Une utilisation élevée du processeur peut indiquer que l’application ne s’adapte pas correctement ou qu’un processus de zombie monte des ressources.
Solution: Ce script Python utilise PSUtil pour surveiller les usages du processeur et envoie des alertes lorsqu’il dépasse un seuil.

Exemple de script:

import psutil  
import smtplib  
  
if psutil.cpu_percent(interval=1) > 80:  
    print("High CPU Usage Alert!!")

3. Automatiser la rotation des journaux

Les gros journaux peuvent rapidement remplir le stockage et peuvent devenir ingérables. L’automatisation de la rotation des journaux aidera à les garder sous contrôle.
Solution: Un travail cron associé à ce script bash comprime et archive les anciens journaux, tout en conservant les récents.
Exemple de script:

#!/bin/bash 
LOG_DIR="/var/log/app/" 
tar -czf $LOG_DIR/archive_$(date +%F).tar.gz $LOG_DIR/*.log 
rm $LOG_DIR/*.log

4. Surveillance de la disponibilité du service

La détection immédiate des temps d’arrêt des services est cruciale pour maintenir la fiabilité des applications.
Solution: Un script Python pingre un point de terminaison de service et envoie des alertes s’il est inaccessible.
Exemple de script:

import requests  
try:  
    response = requests.get("http://my-service-url.com")  
    if response.status_code != 200:  
        print("Service Down Alert!")  
except Exception as e:  
    print("Service Unreachable!")

5. Surveiller l’utilisation de la mémoire

La mémoire du serveur faible peut entraîner des plantages d’applications et une perturbation des services.
Solution: Ce script vérifie l’utilisation de la mémoire et les alertes lorsque la mémoire disponible tombe sous un seuil spécifié. Dans cet exemple, 600 Mo.
Exemple de script:

#!/bin/bash  
THRESHOLD=600 # in MB  
AVAILABLE=$(free -m | awk '/Mem/ {print $7}')  
if [ $AVAILABLE -lt $THRESHOLD ]; then  
    echo "Low Memory Alert!!"  
fi

6. Vérification de la santé du conteneur Docker

La santé des conteneurs est cruciale pour assurer le fonctionnement fluide des micro-services.
Solution: Ce script vérifie la santé des conteneurs Docker en cours d’exécution.
Exemple de script:

#!/bin/bash  
for container in $(docker ps --format "{{.Names}}"); do  
    STATUS=$(docker inspect --format '{{.State.Health.Status}}' $container)  
    echo "Container: $container - Status: $STATUS"  
done

7. Kubernetes Pod Surveillant

Les pods sont les plus petites unités déployables de Kubernetes. La surveillance de leur statut garantit que les applications se déroulent bien.
Solution: Ce script utilise des commandes kubectl pour vérifier les statuts de pod.
Exemple de script:

#!/bin/bash 
kubectl get pods --all-namespaces | grep -v 'Running'

8. Script d’analyse du journal des applications

L’analyse en rondins aide à détecter les problèmes cachés, mais le filtrage manuellement peut prendre du temps.
Solution: Un script bash filtre les journaux d’application pour les messages d’erreur ou les modèles spécifiques.
Exemple de script:

#!/bin/bash 
LOG_FILE="/var/log/app.log" 
grep -i "error" $LOG_FILE

9. Script de vérification de la disponibilité du site Web

Et si votre site Web se déconnecte, il est essentiel de détecter immédiatement la panne.
Solution: Un script Python vérifie si votre site Web est en place et vous avertit s’il est en panne.
Exemple de script:

import requests  
try:  
    response = requests.get("http://myexample.com")  
    print("Website is up!") if response.status_code == 200 else print("Website is down!")  
except:  
    print("Website Unreachable!")

10. Script pour nettoyer les fichiers temporaires

Les fichiers temporaires peuvent encombrer le système de fichiers, conduisant à des problèmes d’espace disque dans le serveur. Le nettoyage des fichiers temporaires est une étape nécessaire.
Exemple de script:

import os  
import shutil  
import time  
  
TEMP_DIR = '/tmp'  
AGE_THRESHOLD = 7 * 24 * 60 * 60  # 7 days in seconds  
  
def clean_temp_files():  
    now = time.time()  
    for filename in os.listdir(TEMP_DIR):  
        file_path = os.path.join(TEMP_DIR, filename)  
        if os.stat(file_path).st_mtime < now - AGE_THRESHOLD:  
            if os.path.isfile(file_path) or os.path.islink(file_path):  
                os.remove(file_path)  
                print(f'Removed file: {file_path}')  
            elif os.path.isdir(file_path):  
                shutil.rmtree(file_path)  
                print(f'Removed directory: {file_path}')  
if __name__ == "__main__":  
    clean_temp_files()

11. Time de résolution DNS de suivi

La surveillance des vitesses de résolution DNS aide à dépanner les performances de l’application lente.
Exemple de script:

#!/bin/bash 
DNS_SERVER="8.8.8.8" 
DOMAIN="example.com" 
dig @$DNS_SERVER $DOMAIN +stats | grep "Query time"

12. Script automatisé de vérification de sauvegarde

Les sauvegardes doivent être vérifiées pour s’assurer qu’elles sont disponibles en cas de défaillance d’un système.
Exemple de script:

#!/bin/bash  
BACKUP_DIR="/backups"  
for file in $BACKUP_DIR/*.tar.gz; do  
    if ! tar -tzf $file > /dev/null; then  
        echo "Corrupted backup file: $file"  
    fi  
done

13. script de surveillance des coûts du cloud AWS

La gestion des coûts du cloud garantit une allocation efficace des ressources et empêche les pointes de facturation inattendues.
Exemple de script:

#!/bin/bash
THRESHOLD=10  # Set cost alert threshold
LOG_FILE="/var/log/aws_cost.log"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXX"

# Fetch today's AWS cost
COST=$(aws ce get-cost-and-usage \
  --time-period Start=$(date +%Y-%m-%d),End=$(date +%Y-%m-%d) \
  --granularity DAILY \
  --metrics "BlendedCost" \
  --query 'ResultsByTime[0].Total.BlendedCost.Amount' \
  --output text 2>/dev/null)

# Ensure COST is not empty/null; if empty, set to zero
COST=${COST:-0}

# Validate COST as a numeric value
if ! [[ "$COST" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then
    echo "$(date): ERROR - AWS cost data is invalid: '$COST'" >> "$LOG_FILE"
    exit 2
fi

# Log the cost
echo "$(date): AWS Cost Today: $COST USD" >> "$LOG_FILE"

# Function to send Slack notification
send_slack_alert() {
    MESSAGE="🚨 *AWS Cost Alert!* 🚨\n\nToday's AWS cost: *\$${COST} USD* 💰\nThreshold: *\$${THRESHOLD} USD*\n\n🔍 Check AWS Cost Explorer for more details."

    PAYLOAD=$(jq -n --arg text "$MESSAGE" '{text: $text}')

    curl -X POST -H 'Content-type: application/json' \
        --data "$PAYLOAD" "$SLACK_WEBHOOK_URL"
}

# Check if cost exceeds threshold using awk
if awk "BEGIN {exit !($COST > $THRESHOLD)}"; then
    send_slack_alert
fi

Conclusion

Ces scripts donneront certainement une base solide pour améliorer l’exploitation forestière et la surveillance de votre infrastructure. Comme il offre une solution pratique, ces scripts peuvent être modifiés davantage au besoin.

Pour plus de contenu DevOps et d’automatisation, abonnez-vous à nos blogs.

Vous avez trouvé cela utile? PARTAGEZ-LE






Source link