7
votes

Evénements de «traçage des événements pour Windows»

Une réponse à Cette question m'a amené à examiner à l'aide de "Tracing d'événement pour Windows" pour ses besoins en matière de traçage. J'ai rencontré NTrace , qui semble être un bon moyen de produire des événements ETW à partir du code C # (en utilisant le modèle de «fournisseur classique» compatible XP).

Cependant, je suis incapable de trouver un moyen facile de consommer ces événements - pour les voir en temps réel et / ou les enregistrer dans un fichier. La seule façon dont j'ai trouvé est que décrit dans la documentation NTRACE: à l'aide d'un outil disponible uniquement dans le cadre de Windows DDK.

Dans le cas d'un problème complexe sur le terrain, nous devrons peut-être demander à l'utilisateur de produire un fichier contenant une trace. Nous ne pouvons pas demander aux utilisateurs de télécharger le DDK ou de réaliser un certain nombre d'opérations complexes afin de le faire.

Y a-t-il un moyen simple et convivial de loger des événements ETW à un fichier?

Aussi, est-il possible que quelqu'un consume des événements ETW sur Windows Vista / 7 s'ils ne fonctionnent pas comme administrateur?


0 commentaires

5 Réponses :


3
votes

Le journal des événements Windows lit l'ETW. En fait, je dirais que c'est la bonne façon pour un consommateur (non-programme) de visualiser et d'exporter les traces ETW.

voir ici pour un exemple. http://blogs.microsoft.co.il/blogs/Applisec/archive/2009/10/12/reading-etw-Tracing-utilisant-event-viewer.aspx

Cette question sur MSDN < / a> décrit quoi faire lorsque les journaux n'apparaissent pas. Est-ce que quelque chose ici aide-t-il?


2 commentaires

Merci pour le lien. Si je lisais le message du blog correctement, il explique comment utiliser l'observateur d'événements pour charger un fichier journal produit par Logman pour un fournisseur personnalisé et comment contourner le journal de bord et voir un journal en temps réel pour un fournisseur déjà disponible dans la visionneuse d'événements. . J'ai réussi à faire ces deux, mais je ne peux pas voir un journal en temps réel pour mon propre fournisseur car il ne se présente pas dans la visionneuse d'événements. Savez-vous ce que je dois faire pour que cela apparaisse?


Merci pour l'information supplémentaire. Tout ce que j'ai lu dit que l'observateur d'événements n'indique pas en fait des traces ETW - à propos du seul moyen de voir une trace en temps réel consiste à utiliser l'outil TraceView de DDK. Néanmoins, cette question était principalement liée à la mise en place de la journalisation d'une trace dans un fichier et j'ai trouvé plusieurs manières alternatives de le faire. Ceux-ci incluent l'outil de ligne de commande "logman" et le "Fiabilité et moniteur de performance". Malheureusement, toutes ces méthodes semblent nécessiter un accès administrateur - je suis toujours intéressé à voir s'il existe un moyen de le faire en tant qu'utilisateur standard.



3
votes

4 commentaires

Merci pour cette information. Donc, sur Windows Vista et ci-dessus, les utilisateurs restreints ne peuvent pas consommer d'événements en temps réel. Savez-vous s'il est possible que ces utilisateurs contrôlent la journalisation des événements dans un fichier?


Il semble que les utilisateurs restreints ne puissent pas contrôler la journalisation des événements dans un fichier. Pour ce faire, un utilisateur devra utiliser un contrôleur de trace, mais msdn.microsoft.com/en-us/library/aa364117%28vs.85%29.aspx dit "Seuls les utilisateurs avec des privilèges administratifs ... peuvent contrôler les sessions de traçage des événements".


Oui, Vista est un peu une traînée. Pour contourner cela, vous pouvez avoir tout l'événement trachant de choses effectuées dans un service qui fonctionne sous un compte privilégié. Probablement plus facile d'avoir l'utilisateur élever, cependant.


Mise à jour: .NET Framework 4.5 introduit le EventsVrace Class qui simplifie la création d'événements pour le traçage des événements pour Windows (ETW).



2
votes

Le traçage ETW a été conçu pour fonctionner uniquement par les administrateurs car la trace peut contenir des informations personnelles identifiables. Et cela poserait une menace de sécurité si un non-administrateur peut capturer la trace.

Voici un exemple d'avertissement de XPERF

La trace que vous venez de capturer "c: \ windows \ system32 \ kernel.etl" peut contenir Des informations personnellement identifiables, y compris mais pas nécessairement limitées aux chemins de fichiers accessibles, des chemins d'accès au registre et des noms de processus. Les informations exactes dépendent des événements enregistrés. S'il vous plaît soyez conscient de cela lorsque vous partageez cette trace avec d'autres personnes.

J'espère que cela répond à votre question


1 commentaires

Merci - ça a du sens. L'avertissement XPERF se lit comme s'il vous permet de conscience que la trace peut contenir vos propres informations personnelles - mais je pense que la plus grande question est que la trace peut contenir les informations personnelles d'autres utilisateurs de la machine (puisque le noyau allie des traces pour tous. utilisateurs). C'est pour cette dernière raison que les traces ne devraient être visionnées que par les administrateurs.




1
votes

imo perfview est l'un des meilleurs outils disponibles pour contrôler et voir des traces Etw. Il peut également fournir des piles d'appels gérés. La meilleure partie de celui-ci est que vous pourriez Xcopy sur n'importe quel serveur et collecter des traces.

perfview utilise la bibliothèque traceeevent et ici the échantillons Comment Vous pouvez l'utiliser à l'aide d'une API et C #


0 commentaires