Analyser son serveur avec le Best Practice Analyzer
Depuis Windows Server 2012, Windows intègre un outil nommé « Best Practice Analyzer » (BPA) qui permet d’analyser la configuration d’un serveur et de vous retourner les corrections que vous devez apporter à votre configuration pour appliquer les meilleures pratiques recommandées par les experts. Ensuite, ce sera à vous de juger si vous pouvez appliquer ou non les recommandations puisque cela dépend de votre infrastructure, ces dernières étant faites pour un environnement normal, idéal.
Par ailleurs, cette analyse peut vous remonter des recommandations qui vous permettront de corriger certains problèmes rencontrés sur votre serveur, votre domaine ou un des services proposés. Cet outil est vraiment intéressant, d’où l’intérêt d’apprendre à le manipuler dans ce chapitre.
Le BPA est un outil capable d’analyser un service en particulier, par exemple, il peut représenter une étape de validation sur la configuration d’un nouveau service sur votre serveur.
I. Créer une analyse avec le Best Practice Analyser
Commençons par importer le module PowerShell BPA :
Import-Module BestPractices
Pour démarrer une analyse BPA, il est nécessaire de préciser un identifiant de modèle, c’est-à-dire le service ciblé que l’on veut analyser.
Pour lister les modèles présents sur le serveur (la liste varie selon les rôles et fonctionnalités installés), on utilisera tout simplement la commande suivante :
Get-BpaModel
On obtiendra cette sortie :
Dans la liste, vous remarquerez que l'ID du modèle pour le service DHCP est "Microsoft/Windows/DHCPServer". Comme nous avons précédemment installé cette fonctionnalité, on va demander à BPA d'analyser la configuration (sachant que nous n'avons pas modifié la configuration).
Invoke-BpaModel -ModelId "Microsoft/Windows/DHCPServer"
Patientez un instant lors de l’analyse, un message sera retourné lorsqu’elle sera terminée, la ligne « Success » doit avoir pour valeur « True ».
Note : Cette commande ne peut pas être annulée tant que l’analyse est en cours d’exécution.
La commande précédente se contente de réaliser l’analyse, sans retourner les résultats de cette analyse. Pour les obtenir, il faut utiliser la commande « Get-BpaResult » suivie de l’ID du modèle ciblé afin de retourner les résultats obtenus pour ce modèle lors de la dernière analyse réalisée.
Ce qui nous donnera :
Get-BpaResult -ModelId "Microsoft/Windows/DHCPServer"
Si l’on souhaite lister uniquement les erreurs de configuration, on ajoutera une clause « Where » pour filtrer les résultats. Les erreurs sont détectables facilement, car le champ « Severity » est égal à « Erreur », ce qui donnera la commande suivante :
Get-BpaResult -ModelId "Microsoft/Windows/DHCPServer" | Where{$_.Severity -eq "Erreur"}
Les résultats sont retournés sous forme de liste, c’est exploitable, mais ce n’est pas agréable à lire… On va corriger le tir en effectuant un export vers un fichier CSV dans la prochaine partie.
II. Exporter les résultats du BPA dans un CSV
Il y a plusieurs bonnes raisons à vouloir exporter les résultats de l’analyse dans un fichier CSV : sauvegarder les résultats, analyser les résultats sur une autre machine (via Excel) et rendre la lecture des résultats plus agréable.
Pour cela, on va s’appuyer sur la commande qui permet d’obtenir les résultats de l’analyse, que nous avons déjà utilisée précédemment, à savoir :
Get-BpaResult -ModelId "Microsoft/Windows/DHCPServer"
On ajoutera à cette commande l’export CSV à la suite d’un pipe, comme ceci :
Get-BpaResult -ModelId "Microsoft/Windows/DHCPServer" | Export-CSV -Path C:\Sources\bpa-dhcp.csv -Encoding UTF8
La commande Export-CSV requiert le chemin vers le fichier CSV à créer et on précise UTF8 pour supporter les accents lors de l’export.
Si l’on ouvre le fichier CSV avec le Bloc-notes, on obtiendra ceci :
En transférant le fichier sur le serveur SRV01 (via le lecteur réseau), on pourra le lire avec Excel depuis une machine cliente disposant de la suite Office. Avant cela, on va améliorer les données intégrées au CSV en ajoutant uniquement les colonnes ayant un intérêt.
Get-BpaResult -ModelId "Microsoft/Windows/DHCPServer" | Select-Object ResultNumber, ResultId, Severity, Category, Title, Problem, Impact, Resolution, Compliance, Help | Export-CSV -Path C:\Sources\bpa-dhcp.csv -Encoding UTF8
Cette commande se déroule en trois étapes :
Au niveau des champs sélectionnés, on trouvera notamment la sévérité (severity) qui permettra de déterminer s’il s’agit d’une information ou d’une erreur de configuration. Le titre du résultat dans le rapport (title) et des informations pour la résolution du problème – si s’en est un (problem, impact, resolution). Enfin, je trouve utile d’ajouter la colonne d’aide (help) qui ajoute un lien vers le site Microsoft afin d’accéder à une page qui contient des détails sur le message remonté par le Best Practice Analyzer.
Pour transférer le document du répertoire « C:\Sources » vers « P:\ » afin d’envoyer le fichier sur SRV, on utilisera une commande que nous n’avons pas encore utilisée : Copy-Item.
Note : Copy-Item peut être raccourci en « cp » qui revient à l’équivalent de la commande pour effectuer une copie sous Linux.
La commande s’utilise simplement en précisant la source et la destination, ce qui donnera :
Copy-Item -Path C:\Sources\bpa-dhcp.csv -Destination P:\
Dans Excel, après avoir remis en forme le CSV en mode colonne, on pourra obtenir très rapidement un véritable tableur avec nos données :
Il ne reste plus qu’à analyser la sortie du Best Practice Analyzer et à effectuer des modifications sur le service DHCP, si besoin.
Vous l’aurez compris, le Best Practice Analyzer est un très bon assistant et un bel outil d’analyse de configuration et d’optimisation. J’insiste sur le fait qu’il est important de s’appuyer sur cet outil pour contrôler et optimiser la configuration des services et du serveur. Bien sûr, dans certains cas il n’est pas possible de suivre les meilleures pratiques à la lettre, mais faites au mieux.
Comme c’est gérable en PowerShell, on peut imaginer créer une tâche automatisée qui contrôlera votre configuration avec un export en CSV pour être analysée.