Le service de Monitoring de MDT 2012 - 2

Maintenant que nous avons installé ce service de monitoring, voyons un peu plus comment il fonctionne.

 

Nous avons donc un service .net qui est installé sur le poste/server MDT.

image

Ce service est un service Web qui utilise par défaut les ports 9800 (pour recevoir des évènements) et 9801 (pour être consulté).

Pour information, il est possible de déporter ce service sur une ou plusieurs autres machine via la ligne de commande :

InstallUtil.exe c:\Program Files\Microsoft Deployment Toolkit\Monitor\Microsoft.BDD.MonitorService.exe

(InstallUtil.exe est un outil présent dans le répertoire C:\Windows\Microsoft.Net\vX.X)

 

Afin de valider la bonne installation du service, vous pouvez ouvrir un navigateur à l’adresse http://monServer:9801/MDTMonitorData/

Voici l’information que vous devriez avoir :

image

 

Attention, l’installation manuelle du service n’ouvrira pas les ports de votre firewall, il faudra le faire manuellement (remarque également valable si vous utiliser un firewall tier). Si vous installez le service de monitoring via la console, les ports seront automatiquement ouvert dans le firewall Windows.

Pour pouvoir utiliser le service il vous faudra rajouter la ligne

EventService=http://monNouveauServer:9800 dans votre fichier CustomSettings.ini ou dans votre base de données.

 

1 – Comment sont remontées les évènements durant le déploiement ?

Dans les différents scripts la publication d’évènements se fait via la fonction CreateEvent(iEventID, iType, sMessage, arrParms) de la classe Logging (ZTIUtility.vbs)

Voici un example d’appel :

      oLogging.CreateEvent 41021, LogTypeInfo, "Setup completed successfully.", Array()

iEventID = ce paramètre contient l’identifiant (entier) du message (à vous de créer vos identifiants)

iType = le type d’évènement (entier)

    ' //     Public Const LogTypeInfo     = 1   ' Informational Message
    ' //     Public Const LogTypeWarning  = 2   ' Warning Message     
    ' //     Public Const LogTypeError    = 3   ' Error Message
    ' //     Public Const LogTypeVerbose  = 4   ' Verbose Messages only logged when Debug has been set.

sMessage = Message à envoyer (string)

arrParams = un tableau contenant des données supplémentaire à envoyer (n’est pas utilisé par le service de monitoring)

Cette fonction enregistre l’évènement sur le serveur via un appel HTTP du type :

      http://monServer:9800/MDTMonitorEvent/PostEvent?uniqueID=XXX&computerName=XXX&messageID=XXX&severity=XXX&stepName=XXX&currentStep=XXX&
totalSteps=XXX&id=XXX&dartIP=XXX&dartPort=XXX&dartTicket=XXX&vmHost=XXX&vmName=XXX

Notez que l’évènement est enregistré dans le service de monitoring uniquement si la variable EventService est paramétrée à http://monServer:9800

Il semble également possible de logger les évènements de monitoring dans un fichier texte sur un serveur en paramétrant la variable EventShare à quelque chose du type \\monServer\monShare

 

2 – Comment consommer ces informations à l’exterieur de la console ?

 

Les informations de monitoring étant stockée dans une base de données de type SQL Compact, seul un processus peut requêter cette base à la fois. Pour consomer les informations en dehors de la console, il vous faudra donc requeter le service via une requete de type http://monServer:9801/MDTMonitorData/Computers (attention IE le voit comme un feed, mais ne peut pas lire son contenu, il faut donc l’ouvrir avec un éditeur de texte).

image

Vous pouvez à partir de cela développer un outil pour lire ces informations sur une autre machine que celle de la console. Pour cela, vous pouvez par exemple importer le service en tant que référence dans Visual Studio afin qu’il vous génère les classes correpondantes aux différents object et ainsi développer votre application simplement :

image

Et ainsi faire une application comme celle que j’ai faite qui permet de suivre vos déploiements provenant de différents services de monitoring :

imageimage