Frédéric Laubel's Blog

Exchange Server Tips & Tricks

Archives pour juin 2009

Exchange 2007 : Ajout et analyse de compteurs de performance (perfmon + pal)

Posté par Frédéric Laubel le juin 18, 2009

Lors de l’installation d’Exchange 2007 celui-ci rajoute des compteurs dans l’outil de collecte de performance Windows (perfmon.msc).

Ces compteurs sont utiles pour superviser des rôles ou des points précis sur Exchange, notamment la réplication CCR ou SCR (Voir l’article Technet sur l’utilisation de perfmon pour superviser Exchange).

Cependant pour faire du troubleshooting poussé ces compteurs ne sont pas suffisant. Heureusement il est possible d’alimenter perfmon avec de nouveaux compteurs spécifiques à Exchange 2007 via des fichiers .xml.

Ces fichiers .xml sont spécifiques à chaque rôles Exchange 2007 :

Prenons l’exemple d’un serveur mailbox sur lequel je souhaite diagnostiquer un problème de lenteur.

Important : Cette procédure n’est valable que pour une configuration sur Windows 2008 en anglais. (Pour une version française sur W2K8 il est nécessaire d’utiliser un outil supplémentaire, et pour Windows 2003 il faut utiliser d’autres fichiers sources. Ça marche bien dans les deux cas mais les procédures sont sensiblement différentes.)

Premier temps : mise en place des compteurs  avec les fichiers .xml

Tout d’abord je récupère le fichier .xml spécifique à mon serveur, ici il s’agit du rôle mailbox donc du fichier Exchange_2007_Perfwiz-MBX.xml.

Dans Server Manager je me positionne sur Reliability and Performance / Data Collector Sets / User Defined / et je crée une nouvelle collecte :

Perfmon (1)

Je donne un nom à ma collecte et je choisi la création depuis un modèle :

Perfmon (2)

Je sélectionne depuis “Browse” le fichier Exchange_2007_Perfwiz-MBX.xml

Perfmon (3)

Sélection du répertoire cible :

Perfmon (4)

Je termine en décidant de ne pas démarrer la collecte immédiatement.

Perfmon (5)

En retournant sur perfmon, la collecte personnalisée apparait bien.

En allant dans les propriétés de la collecte, je peux voir l’ensemble des compteurs de performance inclus dans la collecte. Personnellement je préfère changer le format du fichier en .CSV (en effet j’ai constaté un bug avec le format .BLG en cas d’analyse avec PAL)

perfmon-configCSV

Évidemment libre à vous de supprimer ou ajouter des compteurs ou de conserver le format .BLG.

La collecte peut démarrer.

Perfmon (6)

La collecte est bien en statut Running.

Perfmon (7)

Laissez tourner la collecte le temps qui vous semble pertinent en fonction de vos problèmes, généralement une journée.

Une fois la collecte terminée il est le temps de passer à l’analyse du fichier.

Deuxième temps : l’analyse avec PAL

Le programme PAL, pour Performance Analysis of Logs,  est un outil graphique gratuit dédié à l’analyse des logs de performances, que ce soit pour Exchange, mais aussi SQL, Active Directory,IIS, etc…Il est développé par des gens de Microsoft (surtout par Mike Lagase).

Le gros intérêt de PAL est sa capacité à analyser les données brutes des compteurs de performance (depuis un fichier .csv ou .blg), pour les comparer aux best practices Microsoft et en faire ressortir les dérives éventuelles (avec des codes couleurs, vert, jaune ou rouge). Bref PAL est votre meilleur ami dès qu’il s’agit de troubleshooter des problèmes de performances en environnement Microsoft…

Première étape il s’agit de récupérer la dernière version de PAL et de l’installer. Aucunes difficultés particulières sur ce point, évidement PAL doit s’installer sur une station de travail et non pas directement sur le serveur à analyser.

Une fois la collecte terminée j’importe le fichier dans PAL (onglet Counter Log).

La seule subtilité de l’outil consiste à ne pas oublier de spécifier dans l’onglet Threshold File le type d’analyse. Ici je précise que le fichier provient d’un serveur Exchange 2007 ayant uniquement le rôle Mailbox :

pal

Ensuite j’exécute l’analyse, attention ça peut prendre pas mal de temps en fonction de la durée de la collecte !

Le résultat est un rapport au format HTML (plusieurs centaines de pages !) me permettant de voir tout de suite les points posant problème en rouge.

Contenu du sommaire :

  • Tool Parameters
  • Chronological Order
    • Alerts by Chronological Order
  • Processor
    • Processor Utilization Analysis (Alerts: 0)
    • Processor Queue Length (Alerts: 0)
    • Excessive Processor Use by Processes (Alerts: 0)
  • Network
    • Network Utilization Analysis (Alerts: 0)
    • Network Output Queue Length Analysis (Alerts: 0)
    • Network Interface Packets Outbound Errors (Alerts: 0)
  • Disk
    • Logical Disk Read Latency Analysis (Alerts: 0)
    • Logical Disk Write Latency Analysis (Alerts: 0)
    • Process IO Data Operations/sec (Alerts: 0)
    • Process IO Other Operations/sec (Alerts: 0)
    • LogicalDisk Disk Transfers/sec (Alerts: 0)
  • Memory
    • Free System Page Table Entries (Alerts: 0)
    • Pool Non Paged Bytes (Alerts: 0)
    • Pool Paged Bytes (Alerts: 0)
    • Available Memory (Alerts: 9)
    • Memory Pages/sec (Alerts: 0)
    • Memory Leak Detection (Alerts: 0)
    • Handle Leak Detection (Alerts: 30)
    • High Virtual Memory Usage (Alerts: 0)
    • Process Working Set (Stats only)
    • Memory System Cache Resident Bytes (Alerts: 0)
    • Memory Pages Input/sec (Alerts: 0)
    • Memory Page Reads/sec (Alerts: 0)
    • Memory Cache Bytes (Stats only)
    • Memory Pages Output/sec (Stats only)
    • Memory Transition Pages RePurposed/sec (Alerts: 0)
  • Paging File
    • Paging File % Usage (Alerts: 0)
  • .NET Related
    • Memory Leak Detection in .NET (Alerts: 10)
    • .NET CLR Memory % Time in GC (Alerts: 0)
  • MSExchange ADAccess Domain Controllers
    • MSExchange ADAccess Domain Controllers LDAP Search Time (Alerts: 0)
    • MSExchange ADAccess Domain Controllers LDAP Read Time (Stats only)
    • MSExchange ADAccess Domain Controllers LDAP Searches timed out per minute (Alerts: 0)
    • MSExchange ADAccess Domain Controllers LDAP Search calls/Sec (Stats only)
  • MSExchange ADAccess Caches
    • MSExchange ADAccess Caches LDAP Searches/Sec (Stats only)
  • MSExchangeIS Client
    • MSExchangeIS Client RPC Operations/sec (Stats only)
    • MSExchangeIS Client RPC Average Latency (Alerts: 0)
    • MSExchangeIS Client JET Log Records/sec (Stats only)
  • MSExchangeIS Mailbox
    • MSExchangeIS Mailbox Slow FindRow Rate (Alerts: 0)
    • MSExchangeIS Mailbox Messages Delivered/sec (Stats only)
    • MSExchangeIS Mailbox Messages Queued For Submission (Alerts: 0)
    • MSExchangeIS Mailbox Messages Sent/sec (Stats only)
    • MSExchangeIS Mailbox Messages Submitted/sec (Stats only)
    • MSExchangeIS Mailbox Categorization Count (Stats only)
    • MSExchangeIS Mailbox Search Task Rate (Alerts: 0)
  • MSExchangeIS
    • MSExchangeIS RPC Averaged Latency (Alerts: 0)
    • MSExchangeIS RPC Operations/sec (Stats only)
    • MSExchangeIS RPC Requests (Alerts: 0)
    • MSExchangeIS Virus Scan Queue Length (Stats only)
    • MSExchangeIS Virus Scan Files Scanned/sec (Stats only)
    • MSExchangeIS Virus Scan Messages Processed/sec (Stats only)
    • MSExchangeIS VM Largest Block Size (Stats only)
    • MSExchangeIS VM Total Free Blocks (Stats only)
    • MSExchangeIS VM Total Large Free Block Bytes (Stats only)
    • MSExchangeIS RPC Num. of Slow Packets (Alerts: 0)
    • MSExchangeIS RPC Client Backoff/sec (Stats only)
    • MSExchangeIS Client: RPCs Failed: Server Too Busy / sec (Stats only)
    • MSExchangeIS Slow QP Threads (Alerts: 0)
    • MSExchangeIS Slow Search Threads (Alerts: 0)
  • MSExchange Store Interface
    • MSExchange Store Interface RPC Latency average (msec) (Stats only)
    • MSExchange Store Interface RPC Requests outstanding (Stats only)
    • MSExchange Store Interface RPC Requests failed (%) (Stats only)
    • MSExchange Store Interface RPC Requests sent/sec (Stats only)
    • MSExchange Store Interface RPC Slow requests (%) (Stats only)
    • MSExchange Store Interface ROP Requests outstanding (Stats only)
  • MSExchangeMailSubmission
    • MSExchangeMailSubmission Hub Servers In Retry (Stats only)
    • MSExchangeMailSubmission Successful Submissions Per Second (Stats only)
    • MSExchangeMailSubmission Failed Submissions Per Second (Stats only)
  • Process
    • Process % Processor Time (Stats only)
  • MSExchange Database
    • MSExchange Database Database Page Fault Stalls/sec (Alerts: 0)
    • MSExchange Database Log Record Stalls/sec (Alerts: 0)
    • MSExchange Database Version buckets allocated (Alerts: 0)
    • MSExchange Database Log Threads Waiting (Alerts: 0)
  • MSExchange Search Indices
    • MSExchange Search Indices Throttling Delay Value (Stats only)
  • MSExchange Assistants
    • MSExchange Assistants Events Polled/sec (Stats only)
    • MSExchange Assistants Events in queue (Stats only)
    • MSExchange Assistants Average Event Processing Time In seconds (Stats only)
  • MSExchange Resource Booking
    • MSExchange Resource Booking Average Resource Booking Processing Time (Stats only)
    • MSExchange Resource Booking Requests Failed (Alerts: 0)
  • MSExchange Replication
    • MSExchange Replication CopyQueueLength (Stats only)
    • MSExchange Replication ReplayQueueLength (Stats only)
  • Disclaimer

Extrait :

Extrait-PAL-5

ExtraitPAL-2

Extrait-PAL-3

Extrait-PAL-4

Avouez que c’est quand même beaucoup plus rapide, pratique, pertinent, sérieux et sexy qu’une analyse à la mano !!!

Et coup de chapeau à Mike Lagase et John Rodriguez (Monsieur Performance sur Exchange)…

Publié dans Exploitation | 8 Commentaires »

Exchange 2007 : Scripts powershell pour gérer les bases

Posté par Frédéric Laubel le juin 16, 2009

Voilà trois scripts Exchange 2007 que je trouve indispensables pour administrer les bases.

Évidemment ces scripts sont modifiables en fonction de votre environnement (spécification des serveurs MBX, export,etc…)

Illustration des scripts sur un environnement de test :

  • Répartition des BALs par bases :

repartitionBALparDB

  • Tailles des fichiers .edb :

taillesdesfichiersEDB

  • Etat des bases :

etatdesbases

Publié dans Scripts | Laisser un commentaire »

Exchange 2010 : Explication sur la haute disponibilité et le stockage

Posté par Frédéric Laubel le juin 16, 2009

Exchange2010

Une présentation très sympa et très simple sur le stockage et la haute dispo Exchange 2010  :
La présentation est en Silverlight (l’équivalent de Flash) il faut donc le plugin Silverlight correspondant à votre navigateur.

Exchange2010_Snack

Publié dans Exchange 2010 | Laisser un commentaire »

Les services Exchange qui ne démarrent pas ? Démarrez-les par un script !

Posté par Frédéric Laubel le juin 7, 2009

Pour de multiples raisons (installation sur un contrôleur de domaine, installation récente d’un Rollup, bug, etc…) il peut arriver que certains services Exchange n’arrivent pas à démarrer automatiquement. Dans ce cas, une solution possible peut passer par un script (à lancer depuis un script de boot par exemple) qui va chercher et lancer tous les services Exchange qui sont arretés.

Contenu du script (Exchange shell, donc avec une extension .ps1) :

gwmi win32_service | where-Object {$_.StartMode -eq “Auto” -and $_.Name -like “MSExchange*” -and $_.State -eq “Stopped”} | Start-Service

Le script est à télécharger depuis mon espace perso ici.

Publié dans Scripts | Laisser un commentaire »

Exchange 2010 : Téléchargez le .VHD !!

Posté par Frédéric Laubel le juin 5, 2009

Exchange2010

Excellente nouvelle : Il est maintenant possible de télécharger une machine virtuelle pré-configurée contenant Exchange 2010 :) :)
Il faut être un peu patient car la bête tient sur 9 fichiers de 700Mo…

Attention : il faut impérativement Hyper-V (et donc tous les pré-requis Hyper-V).

Téléchargement immédiat ici

NB: Le mot de passe des comptes est: pass@word1

Publié dans Exchange 2010 | Laisser un commentaire »

Un script pour connaitre la version exacte des serveurs Exchange (Build, Rollup)

Posté par Frédéric Laubel le juin 1, 2009

Comme je l’ai déjà indiqué à l’occasion du Rollup6  (voir dans la catégorie Rollup et Bugs) pour connaitre précisément la version d’un serveur Exchange 2007 il est nécessaire d’aller voir dans le registre. En effet les outils intégrés dans Exchange (get-ExchangeServer | fl ) ne permet pas de récupérer la version du Rollup !

Pour éviter ce travail, Jeff Guillet, MVP Exchange, à eu la bonne idée d’automatiser ça grâce à un ch’tit script :)

Illustration sur ma maquette :
ConnaitrelaversionRollup

Le script est disponible ici.

Publié dans Exploitation, Rollups et Bugs, Scripts | Laisser un commentaire »