Les fichiers de logs Internet Information Services sont utiles pour examiner et suivre des problèmes qui pourraient survenir dans vos applications WEB. Ces logs sont généralement situés dans C:\Inetpub\Logs\Logfiles. Le souci est que ces logs prennent rapidement un volume important. Dans les entreprises, il n’est pas rare de rencontrer des partitions C:\ saturées de logs et à la limite du crash système. Comment purger les logs IIS ? Est-il sûr de les supprimer manuellement ? Peut-on les purger de manière automatique ? Nous allons voir que plusieurs méthodes sont possibles. L’une n’est pas forcément meilleure que l’autre, tout dépend de la situation et des contraintes de l’entreprise. Voici une liste non exhaustive :
- Suppression manuelle
- Création d’une tâche planifiée
- Création d’une ligne de base de configuration (Configuration baseline)
- Purge par un outil tiers (IIS Log Cleaner Tool)
Comment purger les logs IIS
Suppression manuelle : gérer l’urgence
La suppression manuelle des logs s’effectue généralement lors de cas critiques, lorsque la partition C:\ de votre serveur est sur le point de saturer ou qu’il vient de planter par exemple. Ce n’est pas une solution à long terme mais cela permet de dépanner dans l’immédiat.
Pour ce faire, allez dans C:\inetpub\logs\LogFiles\W3SVC1. C’est en général ici que vous trouverez le plus de logs. Sélectionnez tout ce qui date de plus d’une semaine (plus ou moins suivant vos besoins) et supprimez-les. Votre disque respirant à nouveau, vous pouvez maintenant réfléchir à une solution plus pérenne.
Création d’une tâche planifiée
La création d’une tâche planifiée est une solution simple à mettre en place. Cette tâche se basera sur la commande « Foreach » et nous supprimerons les logs qui ont plus de 30 jours. Pour ce faire :
Ouvre l’outil de tâche planifiée sur votre serveur.
En haut à droite, cliquez sur Create a basic task.
Donnez-lui un nom (« Purge logs IIS ») et une description puis cliquez sur Next.
Nous choisissons de réaliser la purge une fois par semaine (weekly).
Choisissez ensuite le jour et l’heure de l’exécution de la tâche.
Dans le volet Action, laissez par défaut (Start a program)
Entrez ensuite l’une des commandes suivantes :
- Forfiles.exe -p C:\inetpub\logs\LogFiles\W3SVC1 -m *.log -d -30 -c “Cmd.exe /C del @path\” pour supprimer seulement les logs de plus de 30 jours du dossier W3SVC1.
- Forfiles.exe -p C:\inetpub\logs\LogFiles -m *.log -d -30 -c “Cmd.exe /C del @path\” pour supprimer tous les logs de plus de 30 jours du dossier parent Logfiles.
Dans la pop-up qui apparaît ensuite, il vous est demandé si vous confirmez vouloir utiliser le programme Forfiles.exe avec les arguments indiqués avant. Cliquez sur Yes.
L’assistant est terminé, il résume la configuration. Cliquez sur Finish pour valider la création.
Purge des logs IIS avec IIS Log Cleaner Tool
IIS Log cleaner tool est un outil tiers. Cet outil nettoie automatiquement le dossier des journaux IIS en supprimant les fichiers journaux plus anciens que l’âge maximum que vous avez défini. Les fichiers journaux sont déplacés vers la corbeille pour éviter toute perte de données potentielle. Bien que cet outil ne soit pas officiellement pris en charge par Microsoft, il fonctionne bien et peut être utilisé pour nettoyer les fichiers journaux. Notons qu’il est tout de même cité dans la documentation de Microsoft.
Voici les étapes pour configurer IIS Log Cleaner Tool :
Tout d’abord, commencez par télécharger l’outil. Vous pouvez le trouver ici.
Ensuite, lancez-le en tant qu’administrateur depuis le serveur.
Une fenêtre indiquera que c’est la première fois que vous exécutez l’outil et vous invite à vérifier les paramètres par défaut.
L’outil se trouve maintenant dans la zone de notification. Faites un clic droit dessus et sélectionnez Settings. Cliquez sur OK.
Cela ouvre un fichier de paramètres dans un bloc-notes. Le fichier texte comprend une commande pour nettoyer les fichiers journaux. Vous pouvez modifier l’âge maximal de 30 jours. Le fichier settings.txt est stocké dans le même dossier que IISLogCleaner.
Enregistrez les paramètres (si vous les avez modifiés) et faites un clic droit sur l’icône IIS dans la zone de notification. Cliquez sur Clean now et attendez que l’outil nettoie les fichiers journaux.
L’outil de nettoyage ne supprime pas les fichiers, il déplace les fichiers journaux vers la corbeille.
Purger les logs IIS avec une Configuration baseline
Création de la collection
Commençons par créer une collection regroupant toutes les machines qui ont le rôle IIS. Nous appellerons la collection « CB-IIS logs cleanup ». Pour peupler cette collection, utilisez la requête suivante :
select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SERVICE.Name = "W3SVC"
Création du Configuration Item
Une fois votre collection créée, allez dans Actifs et conformité (Assets ans Compliance), puis déroulez Paramètres de conformité (Compliance Settings) et faites un clic droit sur Eléments de configuration (Configuration Item). Sélectionner Créer un élément de configuration.
Donnez-lui un nom (CI-IIS logs cleanup) puis cliquez sur Suivant.
Sélectionnez ensuite sur quels système l’élément de configuration doit être appliqué. Nous voulons l’appliquer uniquement sur les serveurs, décochez donc le reste et cliquez sur Suivant.
Dans l’onglet Paramètres, cliquez sur Nouveau pour créer un paramètre de conformité. Dans la nouvelle fenêtre, donnez un nom (Purge logs IIS) sélectionnez Script en paramètre et Chaîne (String) en type de données. Cliquez ensuite sur Ajouter un script.
Copiez le script suivant :
<br>$LogPath="C:\inetpub\logs\logfiles"<br>$Filter = "*.log" $LogAge = 30<br>$LogCount = (Get-Childitem -path:$LogPath -File -Filter:$Filter -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-$LogAge))} | Measure-Object).Count<br>Write-Output $LogCount
Bien sûr vous pouvez modifier le $LogAge selon ce qui vous convient. Cliquez ensuite sur OK.
Dans la partie « Script de correction », cliquez sur Ajouter un script. C’est ici que la suppression des logs va se produire, grâce au script suivant :
$LogPath="C:\inetpub\logs\logfiles"<br>$Filter = "*.log" $LogAge = 30 Get-Childitem -Path:$LogPath -File -Filter:$Filter -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-$LogAge))} | Remove-Item
Cliquez ensuite sur OK. De nouveau dans la fenêtre de création du paramètre, allez dans l’onglet Règles de conformité (Compliance Rules). Cliquez sur Nouveau.
Ajoutez un nom (Purge des logs IIS sup a 30 jours) et indiquez 0 en valeur. Cliquez sur OK pour terminer la règle. Cliquez à nouveau sur OK. Dans la première fenêtre, cliquez sur Suivant. Vous verrez alors la règle que vous venez de créer.
Le résumé s’affiche, cliquez sur Suivant jusqu’à fermer l’assistant.
Création de la configuration baseline
Cliquez droit sur Bases de référence de configuration (Configuration Baselines) et cliquez sur Créer une ligne de base de configuration (Create Configuration Baseline).
Donnez-lui un nom (CB-IIS logs cleanup), cliquez sur Ajouter puissélectionnez Eléments de configuration.
Sélectionner l’élément de configuration créé et cliquez sur Ajoutez. Cliquez sur OK puis OK pour terminer l’assistant.
Déploiement de la configuration baseline
Retournez sur votre collection, faites un clic droit, sélectionnez Déployer puis Ligne de base de configuration. Ajoutez votre ligne de configuration. Cochez les cases « Résoudre les règles non conformes lorsqu’elles sont prises en charge et Autoriser les corrections en dehors de la fenêtre de maintenance. Spécifiez la fréquence d’exécution puis cliquez sur Terminer.
Comment désactiver les logs IIS
Si vous ne voyez aucun intérêt à ce que IIS génère des logs, vous pouvez tout simplement les désactiver. A noter toutefois que certains rapports SCCM peuvent s’en trouver affecté. Pour ce faire :
- Ouvrez IIS Manager
- Sur le panneau de gauche, choisissez votre serveur
- Sur le panneau principal, double cliquez sur Logging
- Dans le panneau de droite, cliquez sur Disable
Conclusion
Nous avons pu voir au travers de cet article que plusieurs méthodes permettent de purger le répertoire des logs IIS. Il vous est même possible de les désactiver complètement si vous ne les jugez pas nécessaires.
Ping : Pourquoi tous les clients SCCM sont offline ?