vendredi 23 mars 2012

Virtualisation, les performances partie 1 : l'alignement des données

Aujourd'hui,  une infrastructure de virtualisation peut se mettre en place assez rapidement : l'installation du système est aisée et les outils d'administration relativement faciles à prendre en main etc.

Il y a toutefois certaines parties, plus sombres ou abstraites, qui nécessitent d'acquérir une expertise spécifique, comme le réseau par exemple mais aussi le stockage, les droits, les protocoles d'échanges etc. etc.

Et il est difficile de prendre tout en compte, tant le nombre de bases de connaissances disponibles sur le sujet de la virtualisation et du stockage est étourdissant et nous savons pertinemment que, parfois, nous passons à coté de certaines possibilités.

Dans cette suite de billets, je vais donner des pistes d'améliorations des performances dans un environnement de virtualisation ESXi sur une plateforme de stockage NetApp. Toutefois, les problématiques que je vais exposer s'appliquent à la plupart des infrastructures de virtualisation : les outils changent mais les méthodes restent identiques.

Dans cette première partie, nous allons étudier la problématique de l'alignement des données dans un environnement de virtualisation, problématique qui peut nuire considérablement aux performances.

Je vais ici faire un point sur ce problème, indiquer les solutions possibles et tâcher de fournir une liste de liens pertinente. L'infrastructure utilisée est à base de VMware ESXi 4.1 sur du stockage NetApp via le protocole NFS.


1. Explications sur l'alignement :

a. Caractéristiques d'un problème d'alignement


Passons outre la notion de cylindre et de pistes et imaginons que la géométrie d'un disque dur est une ligne segmentée par des unités de taille régulière ; lorsque nous créons une partition sur celle-ci, nous ajoutons une nouvelle ligne qui est elle-même segmentée par des unités de taille régulière.

Si les unités qui composent ces deux lignes se superposent parfaitement, alors on considère que la partition et le disque sont alignés, et ce même si le cluster d'une partition contient plusieurs secteurs de disque.

Par contre, si ces deux lignes se chevauchent - à l'instar d'un mur de brique - nous avons un problème d'alignement :


Source : Parallels.com

Ce schéma illustre la superposition du filesystem d'une machine virtuelle sur les blocks d'un volume NFS.

Voici les comportements liés à ce décalage :
- Pour lire le contenu de Cluster1, les Blocks 1 et 2 doivent être lus.
- Pour écrire dans Cluster1, les Blocks 1 et 2 doivent être lus, modifiés et réécrits.


Pour l'illustrer sur une autre architecture, ici du SAN, la superposition de lignes supplémentaires peut encore multiplier le nombre d'unités lues/écrites pour un secteur demandé :

Source : vmware.com

Le disque virtuel (fichier vmdk) est stocké sur une partition VMFS qui repose sur la segmentation de la LUN: on complexifie encore le problème d'alignement, ici pour accéder à un cluster, jusqu'à 3 chunks peuvent être lus.

Heureusement, les dernières versions de VMFS (à partir de la 3 - à confirmer) sont conçues pour s'aligner automatiquement sur le découpage de son espace de stockage, il reste toutefois à aligner le disque virtuel avec les block VMFS.

Prenons un exemple concret :


Je veux lire un fichier de 1024Ko qui se trouve dans une machine virtuelle sur une partition avec des clusters de 8Ko et qui repose sur un disque accessible en NFS avec des Blocks de 4Ko, voici ce qu'il se passera :

- Si la partition est alignée :
1024Ko / 4Ko = 256 blocks seront lus

- Si la partition n'est pas alignée, à chaque cluster, 2 blocks de données sont lus :
1024Ko / 4Ko = 256 x 2  = 512 blocks seront lus au lieu de 256

Maintenant je veux écrire un fichier de 1024Ko sur cette machine :

- Si la partition est alignée :
1024Ko / 4Ko = 256 blocks seront écrits

- Si la partition n'est pas alignée, le disque agira de la façon suivante :
1. détectant un problème d'alignement, il va lire le contenu des blocks liés à chaque cluster, donc 512 lectures
2. En mémoire, afin de ne pas perdre des données, il va modifier ces blocks pour ajouter les nouvelles données à celles déjà existantes (la fin du cluster précédent sur le premier block et le début du cluster suivant sur le deuxième block)
3. il va écrire les deux blocks, soit 512 écritures

A cause d'une seule opération sur une machine virtuelle mal alignée, nous pouvons doubler les informations lues et tripler les opérations liées à l'écriture (le cycle read-modify-write que nous venons de voir).

Si l'on considère que la plupart des machines virtuelles, sur votre plateforme de virtualisation, ne sont pas alignées et que l'on imagine le nombre d'entrées et de sorties disque par seconde, les pertes de performance potentielles sont énormes !

Convaincu et envie de connaitre rapidement les méthodes de réalignement existantes ?
Voyons tout d'abord quelle est la cause de ce comportement : traitons le mal à la racine.

b. La réservation des secteurs, source du problème d'alignement:


Historiquement, la plupart des systèmes d'exploitation se réservent les 63 premiers secteurs du disque dur pour stocker des informations, comme le MBR et la table de partition.
Un secteur de disque dur est, la plupart du temps, égale à 512 octets.

Voici ce que cela donne concrètement :
63 secteurs * 512 octets = 32256 octets, soit 31.5 Ko.

La partition commencera à partir de 31,5 Ko, il s'agit du Starting Offset.
Hors 31,5 Ko, n'est pas divisible par 4 Ko, taille de nos blocks NFS : Les secteurs de notre partition ne peuvent être alignés aux blocks NFS.

Ce schéma s'illustre simplement :


Source : mikedavem.developpez.com

Ce dernier est un scénario lié au RAID et à l'exploitation de BDD avec des strip de 64 Ko, toutefois on comprend bien que :
63 secteurs * 512 octets = 31.5 Ko => Pas divisible par 4, mauvais alignement
64 secteurs * 512 octets = 32 Ko => Divisible par 4, bon alignement

Si vous voulez allez plus loin dans la compréhension de la géométrie des disques dur, vous trouverez une liste de lien à la fin de ce billet.

c. Positivons !


Oui, positivons, les choses ne vont pas si mal ; dans tous les cas elles ne peuvent que s'améliorer.
Le phénomène prenant de l'ampleur (et impactant même le grand public avec l'optimisation des disques SSD)  les outils et les systèmes d'exploitation s'adaptent maintenant à la situation.
Comme VMFS que nous avons vu plus haut, mais aussi la plupart des derniers systèmes d'exploitation, aujourd'hui capables de s'aligner automatiquement : Windows 7, 2008, 2008R2 et Red Hat / CentOS 6.

Par contre, il va falloir s'occuper des anciens systèmes, comme les Windows précédents et les distributions Linux à base de Debian ou de Red Hat 5 et lancer une opération de réalignement sur votre plateforme de virtualisation.
Pour cela, nous devons d'abord savoir détecter et analyser ce problème d'alignement.

2. Détecter un problème d'alignement :

Aucune plateforme de virtualisation ne semble, à ce jour, fournir d'indicateurs pour afficher et détecter simplement un problème d'alignement.

Soit, faisons les choses par nous-mêmes, voici quelques méthodes qui vous permettront de l'identifier simplement :

a. La commande NFSSTAT sur un NetApp


Avec la version 7.3.5 de Data Ontap, la commande NFSSTAT se voit enrichie de nouveaux éléments, en l'occurrence une section "Files Causing Misaligned IO's".

NAS> nfsstat -d
[...]
Files Causing Misaligned IO's
[Counter=61164], Filename=vstorage/CentOS-Intranet/CentOS-Intranet-flat.vmdk
[Counter=210783], Filename=vstorage/Deb4-Webmail/Deb4-Webmail-flat.vmdk
[Counter=62269], Filename=vstorage/CentOS-Axx/CentOS-Axx-flat.vmdk
[Counter=380455], Filename=vstorage/Deb4-www2/Deb4-www2-flat.vmdk
[Counter=52650], Filename=vstorage/W2K3-Sav/W2K3-Sav-flat.vmdk

La partie Counter indique le nombre d'IO mal alignées générées, et la partie Filename, le fichier responsable des ces IO.

L'implémentation de cet indicateur fait donc partie des bonnes nouvelles, même si son exploitation est sujette à controverse : une machine virtuelle correctement alignée au niveau partition peut tout de même apparaitre comme étant génératrice d'IO mal alignées : les applications en production peuvent elles mêmes en générer, c'est par exemple le cas de la plupart des logiciels de base de données.

Pour réinitialiser ces compteurs lancez la commande suivante :
NAS> nfsstat -z

24 heures après, utilisez à nouveau :
NAS> nfsstat -d

Il faut user et abuser de ces commandes, elles vous permettront d'avoir un suivi avant / après réalignement. Attention toutefois aux IO mal alignées générées par les applications.

b. Sur le système d'exploitation de la machine virtuelle


Il existe plusieurs techniques pour récupérer cette information, les valeurs à récupérer étant le StartingOffset et la taille du secteur.

Sur une machine Windows :

Avec MSINFO32.EXE :

MSINFO32 est une application qui recense toutes les informations disponibles sur votre matériel et votre environnement logiciel.
Elle est stockées dans C:\Windows\System32\msinfo32.exe
 
Dans la section Composants / Stockage / Disques, vous trouverez toute la configuration de vos disques dur :


En divisant l'Offset de démarrage (le StartingOffset donc) de la partition avec la taille de secteur nous arrivons à 63.
La partition de cette machine n'est pas alignée.

Avec WMI :
C'est la méthode la plus rapide sous Windows.
Lancez un terminal CMD en mode administrateur et tapez la commande suivante :

C:\> wmic partition get BlockSize, StartingOffset, Name, Index

Vous aurez une sortie du type :

BlockSize Index Name StartingOffset
512 0 Disque n° 0, partition n° 0 1048576


De même, divisez le StartingOffset par la taille du BlockSize (secteur du disque dur), ici nous arrivons à 2048, largement divisible par 4 : la partition est bien alignée.
 

Sur une machine Linux :

Sous Linux c'est la commande fdisk qui va nous renseigner.

Voici la commande :

# fdisk -l -u /dev/sda

Et une sortie de ce commande :

Disque /dev/sda: 21.4 Go, 21474836480 octets
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 secteurs
Unités = secteurs de 1 * 512 = 512 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sda1   *          63    12578894     6289416   83  Linux
/dev/sda2        12578895    14683409     1052257+  82  Linux swap
/dev/sda3        14683410    41929649    13623120   8e  Linux LVM


La colonne "Début" (résultats en rouge) nous fournie immédiatement la réponse, la partition /dev/sda1 commence au 63ème secteur : cette partition, et donc les suivantes, ne sont pas alignées.

c. Avec un plugin NetApp pour vSphere : Virtual Storage Console


NetApp a développé un plugin pour vSphere qui permet d'améliorer l'interconnexion entre son matériel de stockage et une plateforme ESX(i) : Il s'agit du plugin Virtual Storage Console ou VSC.
 
Une fois installé sur votre vCenter, ce plugin devient accessible sur l'ensemble des Datacenter, Cluster et serveurs de votre infrastructure VMWare.
 
En bref, ce plugin permet d'avoir un suivi de la consommation de votre espace de stockage ; de faire du fine tuning NFS et SAN ; de faire du provisionning et du clonage en exploitant les possibilités de votre NetApp.

Mais surtout, il vient avec une suite d'outil sur l'alignement du filesystem de vos machine virtuelle : Les MBR Tools.
 
Il s'agit d'une suite de deux outils : mbrscan, qui va nous permettre de scanner une ou toutes nos machines virtuelles pour y détecter les problémes d'alignement potentiels et mbralign, sur lequel je reviendrai plus bas.

c.1. Installation des mbrtools

Lorsque le plugin Virtual Storage Console est installé, les mbrtools sont disponibles au téléchargement dans la partie Tools de l'onglet NetApp de vSphere:


Téléchargez celui qui correspond à votre plateforme (ESXi ou ESX)

Maintenant vous devez autoriser l'accès en SSH sur votre serveur ESX pour pouvoir y uploader cet outil.

Pour cela, vous devez accéder physiquement à cet ESX (ou via KVM), vous authentifier et aller dans la section Troubleshooting Options.

Sélectionnez Enable Remote Tech Support (SSH) et appuyez sur Enter.



L'accès SSH est maintenant disponible sur votre serveur, vous pouvez vous y connecter en root et y uploader les MBR Tools (via WinSCP par exemple), dans /tmp.

Connectez vous en SSH via un terminal (Putty par exemple), décompresser le fichier :

# tar xvzf /tmp/mbrtools_esxi.tgz

Vous devriez retrouver les MBR Tools dans /opt/ontap.

c.2. Exploitation de mbrscan

Important : les MBR Tools doivent être utilisés sur des machines virtuelles éteintes et sans snapshot !

Toujours dans votre terminal SSH, allez dans le dossier /opt/ontap.

Vous pouvez utiliser Mbrscan pour scanner l'ensemble de vos machines virtuelles en une fois :

# /opt/ontap/mbrscan --all

Ou vous pouvez spécifier un unique fichier de disque dur virtuel à scanner, dans ce cas il faut lui indiquer le fichier flat.vmdk et le chemin pour y accéder :

# /opt/ontap/mbrscan /vmfs/volumes/VstorageA/CentOS-Axx/CentOS-Axx-flat.vmdk

A noter : Sur votre serveur ESX, vos différents Datastores sont accessibles à partir du chemin /vmfs/volumes.

Analysons les résultats d'un mbrscan --all :

--------------------
Failed to open /vmfs/volumes/VstorageA/W2K8-RDS03/W2K8-RDS03-flat.vmdk - [Device or resource busy]
--------------------
/vmfs/volumes/VstorageA/Deb4-GLPI/Deb4-GLPI-flat.vmdk p1 (Linux)    lba:63  offset:32256    aligned:No


/vmfs/volumes/VstorageA/Deb4-GLPI/Deb4-GLPI-flat.vmdk p2 (swap)     lba:11711385    offset:5996229120       aligned:No

/vmfs/volumes/VstorageA/Deb4-GLPI/Deb4-GLPI-flat.vmdk p3 (LLVM)     lba:12691350    offset:6497971200       aligned:No
--------------------
/vmfs/volumes/VstorageA/W2K3-Sav/W2K3-Sav-flat.vmdk p1 (NTFS)       lba:64  offset:32768    aligned:Yes


Le premier bloc correspond à une machine qui n'est pas arrêtée, le vmdk n'est pas accessible.

Le second bloc concerne une machine sous Debian Etch contenant 3 partitions primaires dont aucune n'est alignée.

Quant au dernier, il correspond à une machine Win2003 correctement alignée.

Les résultats sont assez parlant, on retrouve le Starting Offset, le lba (le secteur de démarrage de la partition ou Offset divisé par la taille de Secteur) et un indicateur d'alignement.

Mbrscan vous permet donc de lister très rapidement les disques durs qui nécessitent un réalignement.


d. Le service de support de votre stockage


Non, je ne me moque pas, je comprend que ça puisse être curieux de voir le support de votre prestataire apparaitre dans les méthodes de détection, toutefois il doit rester votre interlocuteur privilégié lorsque vous effectuez un audit de performance.

Au niveau du matériel NetApp, une personne du support pourra analyser bien plus finement vos indicateurs de performance que vous ne le ferez jamais : ils disposent d'outils et de méthodes spécifiques qui vous feront gagner du temps.

Donc si vous avez un support, ouvrez un ticket en indiquant un problème de performance.


3. Les méthodes pour corriger un mauvais alignement


a. Mbralign via les MBR Tools de NetApp


Mbralign va agrandir la zone de réservation des secteurs, puis décaler les blocs des partitions du disque.
Il va toutefois faire une copie du fichier flat.vmdk, pour vous permettre un retour en arrière rapide.

Attention : Si l'opération est efficace et transparente sous Windows, elle est un peu plus complexe sous Linux : il sera nécessaire de réinstaller le gestionnaire de boot Grub. Vous trouverez des liens en fin d'article.
 
Mbralign fonctionne de la même façon que mbrscan :

# /opt/ontap/mbralign /vmfs/volumes/VstorageA/WXP-Lab1/WXP-Lab1-flat.vmdk

Quelques options sont disponibles : --debug ; --quiet ; --help ; etc.

 
Mbralign vous alerte qu'il ne testera pas la présence de snapshots ou de clones liés : à vous de le vérifier avant de vous lancer !
 
Il vous fournit ensuite la configuration actuelle et future de votre machine virtuelle :

mbrtools esxi version 1.0

Part  Type  old LBA   New Start LBA   New End LBA   Length in KB
   P1    07       63              64      16755796        8377866

NOTICE:
This tool does not check for the existence of Virtual Machine snapshots or linked clones.
The use of this tool on a vmdk file that has a snapshot or linked clone associated with it
can result in unrecoverable data loss and/or data corruption.
Are you sure that no snapshots/linked clones exist for this vmdk? (y/n)


Confirmez avec y, il lancera sa procédure de correction :

12801 read ops in 6 sec.  2.44% read (16.17 mB/s).  2.44% written (16.17 mB/s)

L'opération peut durer de une à deux heures avec une moyenne de 15/20 Mo/s.
 
Si jamais vous voulez revenir en arrière et récupérer votre machine virtuelle dans son ancien état, lancez à nouveau mbralign avec le même fichier flat.vmdk.
 
Mbralign vous proposera alors de restaurer votre machine virtuelle :


Shall I restore /vmfs/volumes/VstorageA/WXP - Lab1/WXP - Lab1.vmdk from the backup I made?

Si vous validez, il remplacera le disque actuel par sa sauvegarde : vous retrouverez votre machine virtuelle dans l'état précédent l'opération.

Par contre, si l'opération s'est bien déroulée et si la machine virtuelle est fonctionnelle, pensez à supprimer ces fichiers de sauvegarde : Ils prennent de la place et pourrait bouleverser vos sauvegardes.

Ces fichiers sont identifiables dans le dossier de stockage de la machine virtuel par leurs noms qui se terminent en mbralign-backup.

b. VMWare Converter Standalone 5


En quelques mots, VMWare Converter est une application qui permet initialement d'injecter le contenu d'une machine physique dans une machine virtuelle, il s'agit du P2V (physical to virtual).

Rien ne vous empêche d'installer cet outil sur une machine virtuelle pour l'injecter dans une nouvelle, il s'agit d'un V2V (virtual to virtual)

Depuis la version 5 il existe une option qui permet d'aligner automatiquement le disque virtuel de destination, on peut donc générer une machine virtuelle alignée à partir d'une machine virtuelle mal alignée : oui, on est pas loin d'un trick !

Toutefois cela peut soulever quelques contraintes (inhérente au P2V), comme le changement d'adresse Mac, de SID ou des problèmes de certificats liés à la machine.




C. Quelques applications :



Attention, je n'ai testé aucune de ces solutions, je les donne à titre indicatif.

Les constructeurs de disques semblent diffuser des outils d'alignement gratuitement, il s'agit pour la plupart  d'Acronis Alignment Tool :
- Chez Hitachi
- Chez Samsung
- Chez Western Digital

NetApp propose principalement deux outils :
- Les Host Utilities (pour ESX seulement, ESXi n'est pas supporté)
- Le plugin NetApp Virtual Storage Console 2.1.2 for VMware vSphere

Voici quelques applications payantes qui permettent d'aligner les partitions.
- Paragon Partition Manager Pro
- Paragon Alignment Tool
- Quest vOptimizer Pro
- DFSee et un tuto en français pour l'utiliser


4. La bonne pratique : partitionner soit-même !


a. A la création d'une machine virtuelle / Templates :


Si vous devez ajouter de nouvelles machines virtuelles avec des systèmes d'exploitation anciens ou qui ne pratiquent pas l'alignement automatique, vous devrez créer vos partitions manuellement, à l'ancienne.

La méthode est finalement assez simple et se basera sur les outils existants dans les systèmes d'exploitation : fdisk ou diskpart.

La solution la plus simple est de démarrer votre machine virtuelle toute fraiche avec un CD bootable contenant ces applications, vous pourrez partitionner directement votre disque virtuel.

Vous pouvez également "accrocher" votre nouveau disque virtuel sur une autre machine virtuelle, pour le partitionner. Voici les étapes :
- Créez votre nouvelle machine virtuelle avec son disque dur associé
- Ne démarrez pas la machine virtuelle
- Montez son disque virtuel dans une autre machine virtuelle
- Utilisez les outils fdisk (linux) ou diskpart (Windows) pour créer des partitions alignées
- Désassocier le disque dur
- Démarrez la machine virtuelle et installer votre système

Il existe beaucoup de tutoriaux pour créer des partitions correctement alignées :
- How to Create 4KB Aligned Partitions in Windows XP and Linux
- A Simple How-To on Partitioning and Alignment on GNU/Linux using fdisk
- Using Diskpart to Align a Windows Disk Partition

b. Surtout, alignez vos Templates


Si vous possédez déjà des Templates Windows 2003, XP, Debian etc. vous devrez les aligner.

La procédure est assez simple, vous pouvez même les utiliser en premières afin de vous "faire la main" sur mbrscan et mbralign :
- Convertir vos Templates en machine virtuelle
- Les réaligner
- Les démarrer (en profiter pour les mettre à jour)
- Vérifier le bon fonctionnement du système
- Faire éventuellement une defragmentation
- Les convertir en Templates

Vous supprimez le risque de déployer à nouveau des machines mal alignées sur votre plateforme de virtualisation.


5. Conclusion


Comme nous l'avons vu, l'alignement est loin d'être une problématique triviale et devrait être prise en compte dés l'installation d'une nouvelle plateforme de virtualisation tant les impacts sur la production sont réels voire, catastrophiques.

Pour moi l'alignement était un problème désuet, qui touchait principalement les anciens systèmes RAID, force est de constater que c'est faux : ce phénomène est bien présent et touche les professionnels de l'informatique comme les particuliers (avec les SSD).

Heureusement, les principaux systèmes d'exploitations s'adaptent, les constructeurs de stockage - soucieux de fournir les meilleures performances - rédigent des bases de connaissances et développent des applications.

En attendant il est nécessaire de corriger l'existant - Templates y compris - et j'espère que cet article vous apportera un éclairage et des méthodes fiables pour y arriver.

N'hésitez à intervenir, corriger et enrichir cet article.

Merci pour votre lecture.


Pour aller plus loin :


Pour mieux comprendre et détecter l'alignement :

- La géométrie des disques durs : http://fr.wikipedia.org/wiki/Disque_dur

- L'application VM Check Alignment 1.0, assez limité mais qui vous fournira les informations d'alignement

- Windows 7 - SSD Alignment

Pour reinstaller Grub après l'alignement d'une machine virtuelle sous Linux :
- Chez Ubuntu-fr.orponse, la partition /dev/sda1 commence au 63g Comment réinstaller GRUB ? (la méthode 1.2 est compatible avec la plupart des distro)
- Chez isalo.org Réinstaller Grub-legacy


Les KB sur le sujet :


Chez VMWare :
- Recommandations for aligning VMFS partition (VI3)

Chez NetApp (authentification nécessaire) :
- How to verify and align VMDKs using MBRSCAN and MBRALIGN
- How to align blocks in VMWare ESX
- VMware: How to identify and fix misaligned Windows Virtual Machine disks
- NetApp Communities : Files Causing Misaligned IO's (nfsstat -d) and mbrscan don't agree
- NetApp Storage Best Practices for VMware vSphere
- How to diagnose misaligned I/O on Windows hosts
- Man de NFSSTAT

Chez Microsoft :
- Mauvaises performances liées au RAID
- Alignment changes in Windows 2008 and 2008 R2
- Disk Alignment on Windows 7 for normal disks and SSDs

mercredi 14 mars 2012

Centraliser les journaux de serveurs Windows dans un mail via Powershell

20/03/2012 : 1.01 Amélioration du filtrage des doublons (sur le Message plutôt que ID + Source)

Enfin ! Retour sur Powershell !

PSEvents.ps1 est un script qui va vous permettre de recevoir chaque jour, par mail, une compilation des événements inscrits dans les journaux de votre parc de serveurs Microsoft sur les dernières 24H.

Comme une image vaut mieux qu'un long discours, voici un screenshot :

Chaque bloc séparé par une ligne correspond à une machine ; chaque tableau correspond à un journal particulier ; chaque ligne correspond à un événement et les liens de la dernière colonne sont des liens directs vers www.eventid.net et technet.microsoft.com (avec l'EventID et la Source en champs de recherche).

Comment fonctionne PSEvents.ps1 :

PSEvents.ps1 utilise deux fichiers CSV (à encoder en utf8, évitez les lignes vides et ne pas toucher à la 1ère ligne) :

 - PSEvents-Hosts.csv qui contient la liste des machines à scruter :


Remplissez le tableau selon ce modèle : chaque élément est entres guillemets et ces éléments sont séparés par une virgule.

La liste des journaux à surveiller doit être séparée par des points-virgules.
Sur la capture d'écran, la première ligne correspond aux journaux à scruter sur un contrôleur de domaine Active Directory.

Pour d'autres types de serveur, vous pouvez utilisez les journaux standards Application et System.
Le journal Security est très bavard, je vous recommande de l'ajouter uniquement si vous avez besoin d'y lire certaines informations.

- PSEvents-Exclusions.csv contient l'ID et la Source des événements à exclure du mail (des événements "maitrisés") :


Ce fichier fonctionne de la même façon que PSEvents-Hosts, guillemets et virgules en séparateur.

Le script lit ces fichiers CSV, absorbe les évenements des dernières 24h dans les journaux et sur les machines spécifiés, mets en forme et envoi cette compilation par mail.

Prérequis :

  • Remplir les fichiers CSV vus précédemment, les journaux doivent être inscrit en anglais (Security, System etc...)
  • Une ouverture réseau entre la machine qui exécute le script et les machines cible (il s'agit visiblement des ports standards de communication MS : 135, 139, etc.)
  • Une machine Windows 7 ou un serveur 2008 membre d'un domaine (je n'ai pas testé le script en workgroup) 

Installation :

1. Copiez le dossier PSEvents dans un partage réseau avec des droits limités aux administrateurs.
2. Créez une tâche planifiée :

Dans Outils d'administration, cliquez sur le Planificateur des tâches et créez une nouvelle tâche :


Planifiez le script tous les jours à minuit : (pour rappel, PSEvents extraiera les logs des dernières 24h) :

Au niveau de l'action :


Programme/script : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Ajouter des arguments : -command ". '\\NAS\Share$\PSEvents\PSEventd.ps1'"

Validez la tâche planifiée.

3. Adaptez les variables du script :
Il y a quelques variables à personnaliser : les chemins des CSV, la configuration de la messagerie, le niveau de criticité des messages (guillemets + virgules comme les CSV) la taille maximale des messages d'erreur :
# Chemin des CSV :
$arrHosts = Import-CSV \\NAS\share$\PSEvents\PSEvents-Hosts.csv
$arrExclude = Import-Csv \\NAS\share$\PSEvents\PSEvents-Exclusions.csv

# Variable d'expedition de mail :
$strExpediteur = 'JournauxServeursMS@domaine.fr'
$strDestinataire = 'destinataire@domaine.fr'
$strSrvSmtp = 'smtp.domaine.fr'

# Taille maximale des messages d'erreur (300 par défaut)
$intMaxMessSize = 300

# Niveau de log pour la plupart des journaux sauf Security. Peut être : Information, Warning, Error
$strEventTypeAll = "Warning", "Error"

# Niveau de log pour le journal Sécurité. Peut être : SuccessAudit, FailureAudit
$strEventTypeSev = "SuccessAudit", "FailureAudit"
4. Effectuez des tests :

Indiquez votre adresse mail dans la variable : $strDestinataire
Modifiez les fichiers CSV.
Ouvrez, sur la machine qui executera le script, une console Powershell en administrateur et executez le script manuellement :
.\PSEvents.ps1
Vous pourrez suivre le travail du script dans la console Powershell.
Lorsque vous serez satisfait du résultat, lancez la tâche planifiée manuellement pour vérifier son fonctionnement.
5. Mettre en production !

Gestion des erreurs :

Comme le montre la capture, quelques erreurs sont gérées, fautes de temps je n'ai pris en compte que les principales :
- Une machine injoignable sur le réseau
- Un journal inexistant ou incorrectement orthographié
- Aucun événement correspondant au niveau de criticité indiqué
- Le manque de droit pour lire un journal particulier (cela concerne souvent le journal Security)

Téléchargement :

Vous trouverez un zip de l'ensemble des fichiers nécessaire au fonctionnement du script sur le partage suivant : PSEvents.zip