2010-03-05 36 views
6

Câu trả lời cho câu hỏi this đã dẫn tôi xem xét sử dụng "Theo dõi sự kiện cho Windows" cho nhu cầu truy tìm của chúng tôi. Tôi đã đi qua NTrace, mà dường như là một cách tốt để sản xuất các sự kiện ETW từ mã C# (sử dụng mô hình "nhà cung cấp cổ điển" tương thích với XP).Tiêu thụ sự kiện "Truy tìm sự kiện cho Windows"

Tuy nhiên, tôi không thể tìm thấy cách dễ dàng để tiêu thụ các sự kiện này - để xem chúng trong thời gian thực và/hoặc đăng nhập chúng vào tệp. Cách duy nhất tôi tìm thấy được mô tả trong tài liệu NTrace: sử dụng một công cụ chỉ có sẵn như là một phần của Windows DDK.

Trong trường hợp có sự cố phức tạp trong trường, chúng tôi có thể cần yêu cầu người dùng để tạo tệp chứa dấu vết. Chúng tôi không thể yêu cầu người dùng tải xuống DDK hoặc thực hiện một số thao tác phức tạp để thực hiện việc này.

Có cách nào đơn giản, thân thiện với người dùng để ghi nhật ký sự kiện ETW vào tệp không?

Ngoài ra, một người nào đó có thể tiêu thụ các sự kiện ETW trên Windows Vista/7 nếu họ không chạy với tư cách là quản trị viên không?

Trả lời

3

TraceView là giải pháp out-of-the-box dễ nhất, nhưng có thể viết trình xem ETW của riêng bạn mà cụ thể cho nhà cung cấp của bạn. Điều này sẽ cung cấp cho bạn toàn quyền kiểm soát bản trình bày và giúp người dùng cuối dễ dàng hơn nhiều vì TraceView thực sự là một công cụ gỡ lỗi nhiều hơn là bạn có thể yêu cầu người dùng cuối chạy.

As far as real-time tracing đi, according to the documentation:

Chỉ người dùng có quyền quản trị, người dùng trong nhóm Users Performance Log, và các dịch vụ chạy như LocalSystem, LocalService, NetworkService có thể tiêu thụ các sự kiện trong thời gian thực . Để cấp cho người dùng bị hạn chế khả năng tiêu thụ sự kiện trong thời gian thực, hãy thêm họ vào nhóm Người dùng Nhật ký hiệu suất.

Windows XP và Windows 2000: Bất kỳ ai cũng có thể sử dụng các sự kiện thời gian thực.

Nếu bạn quan tâm đến việc viết trình xem ETW của riêng bạn (thời gian thực hoặc tệp nhật ký), here is the relevant documentation.

+0

Cảm ơn thông tin này. Vì vậy, trên Windows Vista trở lên, người dùng bị hạn chế không thể tiêu thụ các sự kiện trong thời gian thực. Bạn có biết liệu những người dùng này có thể kiểm soát việc ghi nhật ký sự kiện vào một tệp không? – user200783

+0

Dường như người dùng bị hạn chế không thể kiểm soát việc ghi nhật ký sự kiện vào một tệp. Để làm như vậy, người dùng sẽ phải sử dụng bộ điều khiển theo dõi, nhưng http://msdn.microsoft.com/en-us/library/aa364117%28VS.85%29.aspx cho biết "Chỉ những người dùng có tư cách quản trị viên. .. có thể kiểm soát các phiên truy tìm sự kiện ". – user200783

+0

Vâng, Vista là loại kéo. Để giải quyết vấn đề này, bạn có thể có tất cả các công cụ truy tìm sự kiện được thực hiện trong một dịch vụ chạy dưới một tài khoản đặc quyền. Có lẽ dễ dàng hơn chỉ để có người dùng nâng cao, mặc dù. – Luke

3

Nhật ký sự kiện Windows đọc ETW. Trong thực tế, tôi muốn nói đây là cách chính xác cho một người tiêu dùng (không phải chương trình) để xem và xuất các dấu vết ETW.

Xem ở đây để biết ví dụ. http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

This question on msdn Không nên làm gì khi nhật ký không xuất hiện. Có bất cứ điều gì ở đây giúp đỡ?

+0

Cảm ơn bạn đã liên kết. Nếu tôi đọc bài đăng trên blog chính xác, nó mô tả cách sử dụng Trình xem sự kiện để tải tệp nhật ký được tạo bởi người quản lý cho nhà cung cấp tùy chỉnh và cách bỏ qua nhật ký và xem nhật ký thời gian thực cho nhà cung cấp đã có sẵn trong Trình xem sự kiện . Tôi đã quản lý để làm cả hai, nhưng không thể nhìn thấy một bản ghi thời gian thực cho nhà cung cấp của riêng tôi vì nó không hiển thị trong Event Viewer. Bạn có biết tôi cần làm gì để làm cho nó xuất hiện không? – user200783

+0

Cảm ơn thông tin bổ sung. Tất cả những gì tôi đã đọc nói rằng Event Viewer không thực sự hiển thị dấu vết ETW - về cách duy nhất để xem dấu vết trong thời gian thực là sử dụng công cụ TraceView của DDK. Tuy nhiên, câu hỏi này chủ yếu là về việc thiết lập đăng nhập của một dấu vết vào một tập tin, và tôi đã tìm thấy một số cách khác để làm điều đó. Chúng bao gồm công cụ dòng lệnh "logman" và "Độ tin cậy và hiệu suất màn hình". Thật không may, tất cả các phương pháp này dường như yêu cầu quyền truy cập quản trị viên - Tôi vẫn muốn xem liệu có cách nào để làm điều này với tư cách là người dùng chuẩn hay không. – user200783

2

Truy tìm ETW được thiết kế chỉ để quản trị viên chạy vì dấu vết có thể chứa thông tin nhận dạng cá nhân. Và nó sẽ đặt ra mối đe dọa an ninh nếu một người không quản trị có thể nắm bắt được dấu vết.

Đây là một ví dụ cảnh báo từ Xperf

Các dấu vết bạn vừa bị bắt "C: \ Windows \ system32 \ kernel.etl" có thể chứa thông tin cá nhân, bao gồm nhưng không nhất thiết phải giới hạn ở đường dẫn đến tập truy cập , đường dẫn đến đăng ký được truy cập và xử lý tên. Thông tin chính xác phụ thuộc vào các sự kiện đã được ghi lại. Hãy lưu ý điều này khi chia sẻ dấu vết này với những người khác.

Hy vọng điều này trả lời câu hỏi của bạn

+0

Cảm ơn - điều đó có ý nghĩa. Cảnh báo xperf đọc như thể nó làm cho bạn biết rằng dấu vết có thể chứa thông tin cá nhân của riêng bạn - nhưng tôi nghĩ vấn đề lớn hơn là dấu vết có thể chứa thông tin cá nhân của người dùng khác của máy (vì hạt nhân kết hợp dấu vết cho tất cả người dùng). Chính vì lý do thứ hai này mà các quản trị viên chỉ nên xem các dấu vết. – user200783

1

Đây là cách bạn có thể nhận được tùy chỉnh ETW dấu vết từ của riêng bạn và làm thế nào custom provider ETW có thể được sử dụng trong managed code

Hope this helps.

1

IMO Perfview là một trong những công cụ tốt nhất có sẵn để kiểm soát và xem dấu vết ETW. Nó cũng có thể cung cấp ngăn xếp cuộc gọi được quản lý. Phần tốt nhất của nó là bạn có thể xcopy trên bất kỳ máy chủ và thu thập dấu vết.

Perfview sử dụng TraceEvent thư viện và ở đây samples làm thế nào bạn có thể sử dụng nó sử dụng một API và C#

Các vấn đề liên quan