Gestion du stockage des fichiers journaux IIS

par Jim van de Erve

Vous pouvez gérer l'espace disque du serveur que les fichiers journaux d'Internet Information Services (IIS) consomment en utilisant la compression, le stockage à distance et la suppression par script.

Vue d’ensemble

Les fichiers journaux générés par IIS peuvent, avec le temps, consommer une grande quantité d’espace disque. Les journaux peuvent potentiellement remplir un disque dur entier. Pour atténuer ce problème, de nombreux utilisateurs désactivent complètement la journalisation. Heureusement, il existe des solutions alternatives, telles que les suivantes :

Les mesures d’atténuation susmentionnées sont décrites dans les sections ci-dessous. Vous pouvez également prendre les mesures suivantes pour contrôler l’utilisation du disque :

  • Limiter la taille du journal en omettant les champs de propriété inutiles
  • Créer des journaux distincts pour les sites web et les applications
  • Préservez les ressources mémoire en utilisant l’enregistrement binaire centralisé.

Pour plus d'informations, consultez Configuration de l'enregistrement dans IIS.

Activer la compression des dossiers

Les fichiers journaux IIS sont compressés à environ 2 % de leur taille originale. Activez la compression d’un fichier journal comme suit. Seul un administrateur peut effectuer cette procédure.

  1. Cliquez sur l’icône Gestionnaire de fichiers dans la barre d’icônes.
  2. Accédez au dossier contenant des fichiers journaux IIS (par défaut, %SystemDrive%\inetpub\logs\LogFiles).
  3. Cliquez avec le bouton droit sur le dossier, puis sélectionnez Propriétés.
  4. Dans l'onglet Général, de la page Propriétés, cliquez sur Avancé.
  5. Cliquez sur Compresser le contenu pour économiser de l’espace disque, puis sur OK. Enabling compression
  6. Cliquez sur Appliquer, puis sélectionnez s’il faut compresser le dossier uniquement, ou le dossier, ses sous-dossiers et ses fichiers.
  7. Cliquez sur OK. Vérifiez que le contenu du dossier est compressé. Le nom du dossier et le nom de chaque fichier devraient être colorés en bleu, et la taille d'un fichier de compression devrait être plus petite.

Il s’agit d’un moyen simple de réduire l’utilisation du disque. Il ne s'agit toutefois pas d'une solution définitive, car l'utilisation du disque continue de croître au fil du temps et peut finir par saturer le disque dur.

Si le dossier contient déjà une quantité importante de données, l'ordinateur peut mettre un certain temps à compresser son contenu. Notez également que ce processus unique peut ralentir l'ordinateur lors de la compression initiale. Par conséquent, s'il s'agit d'un serveur de production, effectuez cette opération pendant les heures creuses afin d'éviter toute dégradation du service.

Déplacer le dossier du journal vers un système distant

Les fichiers journaux IIS sont stockés par défaut dans le dossier %SystemDrive%\inetpub\logs\LogFiles de votre serveur IIS. Le dossier est configuré dans la propriété Répertoire de la page Journalisation pour le serveur ou un site individuel. Pour réduire le problème de l'utilisation du disque de journalisation, vous pouvez déplacer vos fichiers de journalisation IIS dans un dossier sur un autre serveur qui dispose de plus d'espace. Ce serveur peut se trouver dans le même domaine que le serveur IIS local ou dans un domaine différent. Vous pouvez enregistrer des fichiers journaux à distance, soit pour l'ensemble du serveur, soit pour des sites web individuels.

Cette solution peut contribuer à la sécurité du système, car si un disque dur local tombe en panne, les données du journal sont toujours disponibles sur le stockage à distance. En outre, les fichiers journaux peuvent être utilisés par les systèmes d’analyse.

Modifiez l’emplacement d’un fichier journal IIS vers un partage distant comme suit :

  1. Créez un répertoire de fichiers journaux sur un serveur distant qui se trouve dans le même domaine que votre serveur web local exécutant IIS.

  2. Dans la page Propriétés du dossier, sous l’onglet Partage, cliquez sur Partager pour que le répertoire soit partagé. Sous l’onglet Sécurité, affectez des groupes et des utilisateurs avec les autorisations appropriées. Assurez-vous que les groupes et les utilisateurs appropriés sont en mesure de lire et d'écrire dans les fichiers journaux. Log Folder Properties

    Pour plus d’informations, consultez Configuration des autorisations pour la journalisation à distance.

    Remarque : si vous souhaitez écrire des fichiers journaux sur un serveur distant dans un autre domaine, consultez Configuration d’une session Null pour la journalisation inter-domaines.

  3. Ouvrez le Gestionnaire IIS sur votre serveur web local.

  4. Dans le Gestionnaire des services IIS, dans le volet Connexions, cliquez sur le serveur ou un site web.

  5. Double-cliquez sur Journalisation. Logging Icon

  6. Dans la zone de texte Répertoire, entrez le chemin UNC complet du répertoire que vous avez créé sur le serveur distant. Par exemple, tapez \servername\Logs, où « servername » représente le nom du serveur distant, et « Logs » représente le nom du partage où sont stockés les fichiers journaux. Logging Page

  7. Dans le volet Actions, cliquez sur Appliquer, puis sur OK. Tous les sites web du répertoire doivent commencer à enregistrer des données sur le partage distant.

    Pour plus d'informations, consultez Journalisation à distance.

Supprimez les anciens fichiers journaux par script

Vous pouvez contrôler l'utilisation des fichiers journaux sur le disque en exécutant un script qui supprime automatiquement les fichiers journaux dépassant un certain âge. L'exécution de ce script dans le cadre d'une tâche planifiée permet de maîtriser le problème du remplissage d'un disque sans qu'une maintenance constante soit nécessaire.

Le VBScript suivant vérifie l'âge de chaque fichier journal dans un dossier et supprime tout fichier journal plus ancien que l'âge spécifié. Pour adapter le script à vos besoins, il suffit de modifier le nom et le chemin du dossier à la ligne 1 du script, et de modifier l'âge maximum à la valeur souhaitée en jours, à la ligne 2.

sLogFolder = "c:\inetpub\logs\LogFiles"
iMaxAge = 30   'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
For Each colSubfolder in colFolder.SubFolders
        Set objFolder = objFSO.GetFolder(colSubfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
                iFileAge = now-objFile.DateCreated
                if iFileAge > (iMaxAge+1)  then
                        objFSO.deletefile objFile, True
                end if
        Next
Next

Le script ci-dessus analysera tous les sous-dossiers, il traitera donc les journaux de TOUS les sites qui se trouvent dans et sous le dossier spécifié. Si vous souhaitez limiter le processus à un seul site, modifiez le chemin d'accès en conséquence.

Pour exécuter le script manuellement, exécutez le script suivant dans une ligne de commande administrateur : cscript.exe c:\scripts\retentionscript.vbs

L'utilisation d'un script pour supprimer les fichiers journaux est une solution fiable et à long terme au problème des fichiers journaux qui consomment de l'espace disque. Si vous automatisez le processus, comme indiqué ci-dessous, il ne nécessite pas de maintenance constante.

Exécuter le script en tant que tâche programmée

Vous pouvez automatiser la suppression des fichiers journaux par script en créant un programme de tâches Windows pour exécuter le script périodiquement. Vous pouvez programmer l’exécution du script à tout moment à l’aide du Planificateur de tâches de Windows. La configuration de la tâche programmée doit être coordonnée avec la configuration des options de substitution du fichier journal.

  1. Ouvrez le Gestionnaire de serveur, cliquez sur le menu Outils, puis sur Planificateur de tâches.
  2. Dans le volet Actions de la boîte de dialogue Planificateur de tâches, cliquez sur Créer une tâche. Create Task control
  3. Sous l’onglet Général de la boîte de dialogue Créer une tâche, entrez un nom pour la tâche, par exemple « Supprimer les fichiers journaux ». Définissez les propriétés de sécurité, en sélectionnant un compte d'utilisateur disposant de privilèges suffisants pour exécuter le script. Create Task dialog box
  4. Cliquez sur l'onglet Déclencheurs, puis sur Nouveau. Dans la boîte de dialogue Nouveau déclencheur, définissez Commencer la tâchesur Sur une planification. Sélectionnez la périodicité, par exemple, Quotidien. Entrez la date de Début, sélectionnez des paramètres plus avancés et vérifiez que Activé est sélectionné si vous êtes prêt à lancer la planification. Cliquez sur OK. New Trigger dialog box
  5. Cliquez sur l'onglet Actions, puis sur Nouveau. Dans la boîte de dialogue Nouvelle action, sélectionnez une valeur pour Action, dans ce cas, Démarrer un programme. Dans Program/script, entrez cscriptet, dans Ajouter des arguments (facultatif), entrez le chemin d’accès et le nom du fichier de script, par exemple C:\iis\Log\_File\_Deletion.vbs. Cliquez sur OK. New Action dialog box
  6. Cliquez sur OK.
  7. Vérifiez que la tâche a été ajoutée au volet Tâches actives.
  8. Cliquez avec le bouton droit sur la nouvelle tâche et sélectionnez Exécuter. Task Scheduler dialog box
  9. Naviguez jusqu'au dossier dans lequel le script a été exécuté et vérifiez que les fichiers journaux appropriés ont été supprimés.
  10. Revenez au Planificateur de tâches, cliquez avec le bouton droit sur la tâche, puis cliquez sur Terminer pour que l’état soit Prêt et que la tâche soit prête pour les exécutions planifiées.