2010-03-05 93 views
6

this问题的回答让我研究了使用“Windows事件跟踪”来满足我们的跟踪需求。我碰到过NTrace,这似乎是从C#代码(使用XP兼容的“经典提供者”模型)生成ETW事件的好方法。消费“Windows事件跟踪”事件

但是,我无法找到一个简单的方法来消耗这些事件 - 实时看到它们和/或将它们记录到文件中。我发现的唯一方法是在NTrace文档中描述的:使用仅作为Windows DDK的一部分提供的工具。

在现场出现复杂问题的情况下,我们可能需要请求用户生成一个包含跟踪的文件。我们不能要求用户下载DDK或执行一些复杂的操作来执行此操作。

是否有一种直观的,用户友好的方式将ETW事件记录到文件中?

另外,如果有人在Windows Vista/7上使用ETW事件(如果它们未以管理员身份运行),是否可以使用这些事件?

回答

3

TraceView是最容易出的现成的解决方案,但它是可以编写自己的ETW观众特定于您的供应商。这将使您完全控制演示文稿并使最终用户更容易,因为TraceView实际上更像是一个调试工具,而不是您可以要求最终用户运行的东西。

至于实时跟踪推移,according to the documentation

具有管理权限,性能日志用户组的用户和服务作为本地系统运行,本地服务,只有用户,网络服务会消耗实时事件。要授予受限用户实时使用事件的能力,请将其添加到Performance Log Users组。

Windows XP和Windows 2000:任何人都可以使用实时事件。

如果您有兴趣编写自己的ETW查看器(实时或日志文件),here is the relevant documentation

+0

感谢您提供此信息。因此,在Windows Vista及更高版本上,受限用户无法实时使用事件。你知道这些用户是否可以控制将事件记录到文件中? – user200783 2010-03-07 22:49:08

+0

似乎受限制的用户无法控制将事件记录到文件中。为此,用户必须使用跟踪控制器,但是http://msdn.microsoft.com/en-us/library/aa364117%28VS.85%29.aspx说:“只有具有管理专家的用户。 ..可以控制事件跟踪会话“。 – user200783 2010-03-07 22:57:58

+0

是的,Vista是一种拖累。为了解决这个问题,您可以将所有事件追踪内容在一个在特权帐户下运行的服务中完成。尽管如此,让用户提升可能更容易。 – Luke 2010-03-08 02:32:36

3

Windows事件日志读取ETW。事实上,我认为这是消费者(非程序)查看和导出ETW踪迹的正确方式。

查看这里的例子。 http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

This question on msdn讨论在没有出现日志时该怎么做。这里有什么帮助吗?

+0

感谢您的链接中使用它。如果我正确地阅读博文,它将介绍如何使用事件查看器加载logman生成的自定义提供程序的日志文件,以及如何绕过logman并查看事件查看器中已有的提供程序的实时日志。我设法做到了这两点,但由于它不在事件查看器中显示,因此无法查看我自己的提供程序的实时日志。你知道我需要做什么才能让它出现吗? – user200783 2010-03-05 03:26:08

+0

感谢您的补充信息。我读过的所有内容都说事件查看器实际上并不显示ETW踪迹 - 关于实时查看踪迹的唯一方法是使用DDK的TraceView工具。尽管如此,这个问题主要是关于设置跟踪文件的日志记录,而且我发现了几种可供选择的方法。这些包括“logman”命令行工具和“可靠性和性能监视器”。不幸的是,所有这些方法似乎都需要管理员访问权限 - 我仍然对是否有办法以标准用户身份执行此操作感兴趣。 – user200783 2010-03-05 23:35:52

2

ETW跟踪被设计为只能由管理员运行,因为跟踪可能包含个人身份信息。如果非管理员可以捕获跟踪,则会造成安全威胁。

这里是xperf

你刚才所追踪到“C:\ WINDOWS \ SYSTEM32 \ kernel.etl”警告示例可能包含 个人身份信息,包括但不一定局限于路径访问的文件,注册表访问路径和进程名称。确切的信息取决于记录的事件。与其他人分享这些痕迹时请注意这一点。

希望这回答你的问题

+0

谢谢 - 这是有道理的。 xperf警告的读法好像它让你意识到跟踪可能包含你自己的个人信息 - 但我认为更大的问题是跟踪可能包含机器其他用户的个人信息(因为内核将所有跟踪用户)。由于后一个原因,痕迹只能由管理员查看。 – user200783 2010-03-22 09:02:27

1

IMO Perfview是可用于控制和查看ETW踪迹的最佳工具之一。它也可以提供可管理的呼叫栈。最好的部分是你可以将xcopy拷贝到任何服务器上并收集痕迹。

Perfview使用TraceEvent库,这里的samples你可以如何使用API​​和C#