2010-03-05 122 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#