Использование событий "трассировка событий для Windows"

ответ этой вопрос заставил меня изучить использование "трассировки событий для Windows" для наших нужд трассировки. Я наткнулся NTrace, что, по-видимому, является хорошим способом создания событий ETW из кода C# (используя XP-совместимую модель "классического провайдера").

однако я не могу найти простой способ потреблять эти события-чтобы увидеть их в режиме реального времени и/или войти в файл. Единственный способ, который я нашел, это то, что описано в Документация по NTrace: использование инструмента, который доступен только как часть Windows DDK.

в случае сложной проблемы в этой области нам может потребоваться задать пользователей создать файл, содержащий след. Мы не можем просить пользователей загружать DDK или выполнять ряд сложных операций для этого.

есть ли простой, удобный способ регистрации событий ETW в файл?

кроме того, возможно ли кому-то потреблять ETW события в Windows Vista / 7, если они не выполняются как администратор?

5 ответов


TraceView-это самое простое решение из коробки, но можно написать свой собственный просмотрщик ETW, который специфичен для вашего провайдера. Это даст вам полный контроль над презентацией и сделает его намного проще для конечного пользователя, поскольку TraceView-это скорее инструмент отладки, чем то, что вы можете попросить конечных пользователей запустить.

Что касается отслеживания в реальном времени,согласно документации:

только пользователи с административными привилегии, пользователи в группе пользователи журнала производительности и службы LocalSystem, LocalService, NetworkService могут использовать события в режиме реального времени. Чтобы предоставить ограниченному пользователю возможность использовать события в реальном времени, добавьте их в группу пользователи журнала производительности.

Windows XP и Windows 2000: любой может потреблять события в реальном времени.

Если вы заинтересованы в написании собственного просмотра ETW (в режиме реального времени или файла журнала),здесь уместно документация.


журнал событий Windows считывает ETW. На самом деле я бы сказал, что это правильный способ для потребителя (не программы) просматривать и экспортировать трассировки ETW.

см. здесь для примера. http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

этот вопрос на msdn обсуждает, что делать, когда журналы не появляются. Что-нибудь помогает?


трассировка ETW предназначена для запуска только администраторами, поскольку трассировка может содержать личную идентифицируемую информацию. И это будет представлять угрозу безопасности, если не-администратор может захватить трассировку.

вот пример предупреждения от xperf

след, который вы только что захватили "C:\Windows\system32\kernel - ... этл" может содержать личная информация, включая, но не обязательно ограничиваясь путями к файлам, к которым обращались, путями к реестру и именами процессов. Точная информация зависит от событий, которые были зарегистрированы. Пожалуйста, помните об этом, когда делитесь этим следом с другими людьми.

надеюсь, это ответит на ваш вопрос


вот как вы можете получить пользовательские следы ETW от своих собственных поставщик и как ETW можно использовать внутри управляемого кода

надеюсь, что это помогает.


ИМО Perfview является одним из лучших инструментов для управления и просмотра трассировок ETW. Он также может предоставлять управляемые стеки вызовов. Лучшая часть этого - вы можете xcopy на любом сервере и собирать следы.

Perfview использует библиотеку TraceEvent и здесь образцы Как вы могли бы использовать его с помощью API и C#