PNetAnalyzer
PNetAnalyzer is a process-network monitor based on ETW.
库的地址: PNetAnalyzer
TraceEvent原理
详解请参阅The TraceEvent Library Programmers Guide.
ETW的架构组成有三部分如下:
-
Event Session
: 对应c#类Microsoft.Diagnostics.Tracing.TraceEventSession
, 扮演着整个ETW机制中”控制器”的人物,它能够决定收集什么类型的Event Provider
所供给的日志信息,什么时候收集开始/结束,收集数据的转发/存储等; -
Event Provider
: 对应c#类Microsoft.Diagnostics.Tracing.EventSource
, 在ETW中作为一个”生产者”的人物而存在,它是windows日志系统的一部分,用户能够根据不同的Provider来获取自己感兴趣的内容; -
Event Consumer
: 对应c#类Microsoft.Diagnostics.Tracing.TraceEventSource
, 从文件或许Comsumer处拿出数据进行分析收拾。
在Event Consumer
拿到的数据是UNPARSED数据,此处就用到了TraceEventParser
之类的解析器来对原始数据进行解析。解析的办法有两种:
- 运行时解析: 简单来说就是拿到原始数据再由用户来解析;
- 编译期解析: etw供给了一些解析类,经过这些类,用户就不必对原始数据进行格局化;
不同点点击: Static vs. DynamicTraceEventParser
parsers
对于编译期解析而言,ETW供给了下图的一些类:
-
KernelTraceEventParser
: 解析内核事情,例如DLL loading, process start/stop, CPU sampling, page faults, Disk I/O file I/O, memory, etc; -
ClrTraceEventParser
: 解析.NET CLR事情,例如GC events, Just in Time compilation events, Exception events, etc; -
DynamicTraceEventParser
: 清楚每个Event Provider
的格局,该parser在运行时经过manifests对不同的provider数据进行解析; -
RegisteredTraceEventParser
: 解析每一个在上操作系统运用wevtutil
命令行引起的注册事情; -
WPPTraceEventParser
: 解析每一个运用WPP Tracingsystem引起的事情, 设备驱动和其它基础组件运用该机制; -
JScriptTraceEventParser
: 解析JavaScript运行时事情; -
TPLTraceEventParser
: 解析Task Parallel库事情(例如c#的System.Threading.Tasks
); -
ASPNetTraceEventParser
: 解析ASP.NET事情;
Overview
参阅: Review of the Fundamental TraceEvent Architecture
-
TraceEventSession
开启新的ETW sessions来监控相关的ETW providers,并将数据重定向; -
ETW providers有两种:
- windows os kernel provider,包含.NET, JScript运行时等;
- 用户自定义的Event Provider;
-
hook相关的
ETWTraceEventSource
来获取相关的event数据流; -
ETWTraceEventSource
的供给的事情数据是为解析的,因而需求运用相关的TraceEventParser
来对数据进行解析:- 编译期解析: 要解析的event格局在编译期现已确定,因而运用这种办法功率会很高(编译期解析需求运用TraceParserGen生成相关的minifests,系统的event简直都有相关的manifests,因而不必用户生成);
- 运行时解析: 用户运行时手动解析hook到的event事情数据;
-
在确定了想要重视的etw providers之后,调用
ETWTraceEventSource.Process()
来获取ETW数据流,并对数据进行处理。
PerfView
perfview是一款微软基于TraceEventLibrary开发的开源功能分析工具。
Pktmon
pktmon 是一个windows官方供给的十分强壮的网络确诊工具,它有两种基本模式trace
和capture
:
-
trace
模式: pktmon会经过trace不同的ETW provider
来获取不同的功能数据; -
capture
模式: 会像wireshark相同进行抓包;
Reference
Components
Event Tracing for Windows (ETW)
Listing of ETW (Event Tracing for Windows) Providers and their GUIDs for Windows 7×64