2008-11-14 5 views
2

Y at-il un événement WMI auquel vous pouvez vous abonner et qui se déclenche lorsqu'une machine distante démarre et se met en ligne ou se déconnecte?Evénement WMI lorsque la machine est en ligne

Mon application doit être en mesure de surveiller les machines pour leur disponibilité, et idéalement, je voudrais quelque chose qui peut fonctionner via des événements au lieu de l'interrogation continue.

+0

Vous ne dites pas si c'est pour n'importe quelle machine sur le réseau, ou êtes-vous intéressé par un ensemble spécifique connu de machines? – Tim

Répondre

1

Abonnement à un événement d'arrêt est théoriquement possible. Vous pouvez vous abonner pour recevoir les mises à jour du journal des événements "Système". Vous recherchez un événement à partir de Source = "EventLog" et EventID = 6006. Cet événement contient le message:

Le service du journal des événements a été arrêté.

Il s'agit généralement du dernier message écrit à l'arrêt. Mais attendez! Il peut être problématique de recevoir ceci via WMI. Pourquoi? Il se peut que le service WMI lui-même s'arrête avant EventLog, il pourrait donc s'agir d'un Catch 22. Vous pourriez potentiellement rechercher un autre message qui se produit plus tôt pendant l'arrêt sur les serveurs que vous surveillez, et surveillez-le. Un événement de démarrage entraîne un ensemble encore plus gênant de Catch 22s. Pensez à la façon dont WMI Eventing fonctionne pour un moment. Pour obtenir des événements, vous devez ouvrir une connexion au serveur WMI distant via DCOM et émettre une requête WQL pour indiquer les événements souhaités. Pour recevoir un événement de démarrage, vous devez savoir "par magie" d'ouvrir la connexion et d'émettre la requête avant le déclenchement de l'événement.

Il y a quelques années, j'ai écrit un service qui collectait les entrées du journal des événements à partir de serveurs distants pour une application de surveillance réseau. Juste la logique de détecter quand la connexion DCOM à la télécommande avait été perdu et avait besoin d'être reconstruit était une douleur majeure dans le cou. Comme c'était le cas, il s'agissait d'un composant d'un système plus important qui envoyait une commande ping aux hôtes distants. Nous nous sommes donc reposés sur ces informations pour savoir quand reconstruire nos connexions DCOM.

0

Une consultation autour de Microsoft et d'autres sites ne fournit aucune information sur un événement «boot» dans WMI. Toutefois, cela thread suggère d'installer quelque chose dans le dossier de démarrage sur le serveur (s) que vous souhaitez surveiller.

1

Ces systèmes sont-ils sur DHCP? Il pourrait être plus facile de surveiller les renouvellements DHCP pour voir quand un système est de nouveau en ligne.

0

En règle générale de mon expérience cela se fait mieux avec active (vote/pinger/tout ce que vous voulez l'appeler)

Qu'en est-il du vote ne vous aimez? (en général, je partage votre aversion pour l'interrogation pour la plupart des utilisations, mais c'est un cas où c'est probablement une bonne solution)

À tout le moins, vous pouvez faire un petit processus d'interrogation léger qui déclenche alors des événements à un ensemble de abonnés lorsque l'état change pour une machine. Ensuite, si vous trouvez une meilleure solution, vous avez déjà une interface pour les événements.

Questions connexes