TUTOS.EU

Mettre en place et modifier une capture perfmon avec Logman

Mettre en place ou modifier une capture de compteurs perfmon en ligne de commande avec logman

Vous pouvez créer un Data Collector Set sur une machine distante en important un modèle qui est sous la forme d'un .xml
Le Data Collector Set sera ici nommé "Server Manager Performance Monitor"

logman import -n "Server Manager Performance Monitor" -xml c:\Modele.xml -s NomMachine
Lien vers le fichier : cliquez ici Copier le code

Voici à quoi ressemble un Data Collector Set

Sous 2008 on peut facilement créer un modèle en créant dans l'interface graphique un Data Collector Set avec tout ce qui va bien puis en faisant un clic droit dessus puis en cliquant sur "Enregistrer le modèle"

Pour ajouter de nouveaux compteurs à prendre en compte dans une capture dans un Data Collector Set nommé "Server Manager Performance Monitor"
Les compteurs sont dans un fichiers C:\Compteurs.txt

Logman update -n "Server Manager Performance Monitor" -cf "C:\Compteurs.txt" -s NomMachine
Lien vers le fichier : cliquez ici Copier le code

On peut en même temps ajouter d'autres paramètres comme la fréquence de l'échantillonnage, la date de début, l'emplacement du fichier de sortie etc ...

Logman update -n "Server Manager Performance Monitor" -cf "C:\Compteurs.txt" -b 1/20/2016 00:00:00 -si 05:00 -f bin -o "%systemdrive%\PerfLogs\Admin\ServerManager" -s NomMachine
Lien vers le fichier : cliquez ici Copier le code

Exemple de compteurs contenus dans C:\Compteurs.txt
Attention : le nom des compteurs est sensible à la langue de l'OS.
Ici ce sont des compteurs en Français, vous ne pourrez pas les importer dans un OS Anglais

\Processeur(_Total)\% temps processeur
\Mémoire\Kilo-octets disponibles
\Processus(*)\% temps processeur
\Processus(*)\Nombre d’octets de données/s
\Processus(*)\Octets privés
\Processus(*)\Nombre de threads
\Processus(*)\ID de processus
\Disque logique(*)\Écritures disque, octets/s
\Disque logique(*)\Lectures disque, octets/s
\Disque logique(*)\Longueur moyenne de file d’attente du disque
\Disque logique(*)\Longueur moyenne de file d’attente écriture disque
\Disque logique(*)\Longueur moyenne de file d’attente lecture disque
\Disque logique(*)\Mégaoctets libres
\Interface réseau(*)\Longueur de la file d’attente de sortie
\Interface réseau(*)\Octets envoyés/s
\Interface réseau(*)\Octets reçus/s
\Mémoire\Entrées libres en table des pages système
\Mémoire\Octets de réserve non paginée
\Mémoire\Octets du cache
\Mémoire\Pages/s
\Mémoire\Pourcentage d’octets dédiés utilisés
\ICA Session(*)\*
Lien vers le fichier : cliquez ici Copier le code

Attaché à cet article vous trouverez un modèle en .xml à télécharger et que vous pourrez ensuite importer. La partie sécurité du fichier .xml a été effacée afin de ne pas créer de problème avec un SID non trouvé. De toute façon des droits par défaut seront créé à l'importation.

Ci-dessous un script vbs qui génère un .bat contenant les commandes pour arrêter une capture, injecter de nouveaux compteurs et redémarrer la capture
Le nom des machines à traiter doit être sous forme de liste dans un fichier à part.
Ce fichier à part porte le même nom que le script vbs avec en plus le suffix _ListeMachines.txt

A vous d'adapter le script pour vos besoins :

Option Explicit

Dim objFSO, objTextFileBAT, objTextFileListe
Dim CheminScriptActuel, CheminFichierBAT, CheminFichierListeMachines, ScriptFileName
Dim Position
Dim NomMachine, NomCollection

'Déclaration des constantes
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8

NomCollection = "Server Manager Performance Monitor"
NomCollection = Trim(InputBox("Entrez le nom de la collection perfmon","Nom de la collection",NomCollection))

ScriptFileName = wscript.scriptname
Position = InstrRev(ScriptFileName,".")
if (Position > 0) Then ScriptFileName = Left(ScriptFileName, Position - 1)

CheminFichierBAT = ScriptFileName & "_Batch.bat"
CheminFichierListeMachines = ScriptFileName & "_ListeMachines.txt"

CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichierBAT = CheminScriptActuel & "\" & CheminFichierBAT
CheminFichierListeMachines = CheminScriptActuel & "\" & CheminFichierListeMachines

If (Len(CheminFichierBAT) > 0) And (Len(CheminFichierListeMachines) > 0) Then

	Set objFSO = CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FileExists(CheminFichierListeMachines) Then 'Si le fichier qui contient la liste des machines existe
		Set objTextFileListe = objFSO.OpenTextFile(CheminFichierListeMachines, ForReading, True)
		Set objTextFileBAT = objFSO.OpenTextFile(CheminFichierBAT, ForWritting, True)
		
		Do Until objTextFileListe.AtEndOfStream
			NomMachine = objTextFileListe.Readline 'Lecture et affichage de la ligne
			Wscript.Echo NomMachine
			
			objTextFileBAT.WriteLine("logman stop -n """ & NomCollection & """ -s " & NomMachine)
			'objTextFileBAT.WriteLine("logman delete -n """ & NomCollection & """ -s " & NomMachine)
			'objTextFileBAT.WriteLine("logman import -n """ & NomCollection & """ -xml C:\Modele.xml -s " & NomMachine)
			objTextFileBAT.WriteLine("Logman update -n """ & NomCollection & """ -cf ""C:\Compteurs.txt"" -si 01:00 -s " & NomMachine)
			objTextFileBAT.WriteLine("logman start -n """ & NomCollection & """ -s " & NomMachine)
			objTextFileBAT.WriteLine("")
		Loop		
		
		objTextFileBAT.Close 'Fermeture du fichier
		objTextFileListe.Close

		Set objTextFileBAT = Nothing
		Set objTextFileListe = Nothing
	Else
		Wscript.echo "Le fichier '" & CheminFichierListeMachines & "' n'existe pas"
		Set objTextFileBAT = objFSO.OpenTextFile(CheminFichierListeMachines, ForWritting, True)
		objTextFileBAT.Close 'Fermeture du fichier
		Set objTextFileBAT = Nothing
	End If

	Set objFSO = Nothing

Else
	Wscript.echo "Operation annulee"
End If 'CheminFichierBAT
Lien vers le fichier : cliquez ici Copier le code

Ci-dessous un script vbs plus ancien et moins souple qui a le même but et qui génère lui aussi un .bat
Ici on a une boucle qui génère un nom de serveur allant de 01 à 19. Les noms de serveurs iront donc de NomServeur01 à NomServeur19

Dim objFSO
Dim objTextFile
Dim CheminFichier
Dim CheminScriptActuel
Dim NomMachinedeBase, NomMachineComplet, CompteurMachine

'Déclaration des constantes
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8

NomMachinedeBase = "NomServeur"

CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichier = CheminScriptActuel & "\ZZMonFichier.bat" 'Déclaration du chemin et du nom du fichier
'CheminFichier = Trim(InputBox("Entrez le chemin complet du fichier","Chemin complet du fichier",CheminFichier)) 'Validation du chemin et du nom du fichier

If Len(CheminFichier) > 0 Then
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objTextFile = objFSO.OpenTextFile(CheminFichier, ForWritting, True)
	
	CompteurMachine = 1
	
	Do
		If Len(CompteurMachine) = 1 Then
			NomMachineComplet = NomMachinedeBase & "0" & CompteurMachine
		Else
			NomMachineComplet = NomMachinedeBase & CompteurMachine
		End If
		objTextFile.WriteLine("logman stop -n ""Server Manager Performance Monitor"" -s " & NomMachineComplet)
		objTextFile.WriteLine("Logman update -n ""Server Manager Performance Monitor"" -cf ""C:\Compteurs.txt"" -si 01:00 -s " & NomMachineComplet)
		objTextFile.WriteLine("logman start -n ""Server Manager Performance Monitor"" -s " & NomMachineComplet)
		objTextFile.WriteLine("")
		
		CompteurMachine = CompteurMachine + 1
	Loop While CompteurMachine =< 19
	
	objTextFile.Close 'Fermeture du fichier

	Set objTextFile = Nothing
	Set objFSO = Nothing
Else
	Wscript.echo "Operation annulee"
End If 'CheminFichier
Lien vers le fichier : cliquez ici Copier le code

La commande ci-dessous permet de lister les collecteurs de données existants :

logman query
Lien vers le fichier : cliquez ici Copier le code

Ici cela retourne un résultat :
Server Manager Performance Monitor

On le retrouve via l'interface graphique

En ligne de commande on peut alors l'interroger ainsi :

logman query -n "Server Manager Performance Monitor"
Lien vers le fichier : cliquez ici Copier le code

On récupère, par exemple, les compteurs de la collection interrogée

Pages Web

Site WebDescription
Technet.microsoft.comDoc technet sur la commande logman update trace
Blogs.technet.comTwo Minute Drill LOGMAN.EXE

Téléchargement(s)

NomSite Web d origineDescription
8557Modele.xml Modèle à importer pour perfmon sous Windows 2008


Article(s) précédent(s)

2