Monthly Archive 20 May 2024

ByPatrick

Script PowerShell pour la Gestion des Fichiers Anciens et la Supervision avec Graylog

Cet article détaille un script PowerShell conçu pour la suppression de fichiers anciens sur un serveur tout en communiquant les étapes clés du processus à un système de supervision Graylog. Ce script est un exemple de l’intégration entre l’automatisation des tâches système et la surveillance des applications en temps réel.

Configuration de la Connexion Graylog

Le script débute par la configuration de la connexion au serveur Graylog. L’adresse du serveur est spécifiée, ainsi qu’un modèle de message JSON qui sera utilisé pour envoyer des informations à Graylog. Le modèle inclut la version du format de message, le nom de l’hôte (récupéré dynamiquement), un message court par défaut et un niveau de gravité.

$graylogServer = "http://9-o:12294/gelf"
$graylogMessageTemplate = @{
    version = "1.1"
    host = $env:COMPUTERNAME
    short_message = "test"
    level = 1
}

Fonction d’Envoi de Messages à Graylog

Une fonction Send-GraylogMessage est définie pour encapsuler la logique d’envoi de messages. Elle prend en paramètre un message sous forme de chaîne de caractères, met à jour le modèle de message, convertit le message en JSON, puis envoie le message au serveur Graylog en utilisant Invoke-RestMethod.

function Send-GraylogMessage {
    param (
        [Parameter(Mandatory=$true)]
        [string]$message
    )
    $graylogMessageTemplate.short_message = $message
    $jsonMessage = $graylogMessageTemplate | ConvertTo-Json
    Invoke-RestMethod -Method Post -Uri $graylogServer -Body $jsonMessage
}

Configuration du Script de Nettoyage

Le script établit ensuite le dossier cible dont les fichiers doivent être évalués et détermine la limite de temps pour laquelle les fichiers sont considérés comme anciens (dans ce cas, 24 mois).

$targetFolder = "d:\Projects\PortalConductor\cache\user"
$limit = (Get-Date).AddMonths(-24)

Surveillance de l’Exécution

Avant de commencer le processus de nettoyage, le script envoie un message à Graylog pour indiquer le démarrage du script.

Send-GraylogMessage -message "acrp-appora01 : Le script de suppression des fichiers anciens a été démarré."

Traitement des Fichiers

Le script parcourt ensuite tous les fichiers dans le dossier cible et vérifie pour chacun si la date de dernière modification est plus ancienne que la limite fixée. Si c’est le cas, le fichier est supprimé et un message est envoyé à Graylog signalant la suppression du fichier.

$files = Get-ChildItem -Path $targetFolder -File -Recurse

foreach ($file in $files) {
    if ($file.LastWriteTime -lt $limit) {
        Remove-Item -literalpath "$($file.FullName)" -Force
        Send-GraylogMessage -message "acrp-appora01 : Le fichier $($file.FullName) a été supprimé."
    }
}

Message de Fin d’Exécution

Enfin, un dernier message est envoyé à Graylog pour notifier la fin du script.

Send-GraylogMessage -message "acrp-appora01 : La suppression des fichiers anciens est terminée."

Conclusion

Ce script PowerShell est un exemple efficace de la manière dont les tâches administratives peuvent être non seulement automatisées mais aussi supervisées pour une meilleure traçabilité et un suivi en direct. L’intégration avec Graylog permet aux administrateurs de système de recevoir des retours immédiats sur les actions effectuées par le script, ce qui est particulièrement utile pour le dépannage et la documentation des opérations d’entretien régulières.


Assurez-vous que l’adresse du serveur Graylog est correcte et accessible depuis le système où le script est exécuté. Il est également important de noter que le script supprime des fichiers, ce qui est une opération irréversible ; donc une attention particulière doit être portée lors de la spécification du dossier cible et de la période de temps.