跟踪
跟踪使用 Windows 事件跟踪 (ETW)。 若要利用 Windows Server 2008 R2 提供的跟踪工具,请安装 Microsoft Windows SDK。
支持三个跟踪级别:
- 详细(所有可用的跟踪)。
- 信息(信息跟踪)。
- 错误(错误跟踪)。
跟踪了以下事件:
- 任何错误(Level=Error、Level=Info 或 Level=Verbose)。
- API 的入口/出口(Level=Info 或 Level=Verbose)。
- 任何 IO 的开始和完成(Level=Info 或 Level=Verbose)
- 交换的 SOAP 消息(Level=Verbose,可在 Windows 2003 SP1 及更高版本上使用)
WWSAPI 使用基于 Windows Vista 及更高版本的事件。 因此,跟踪体验根据操作系统版本存在一些差异。 可以在所有受支持的平台上使用现成的 ETW 工具生成 ETW 跟踪。 但是,以良好的格式查看 ETW 跟踪需要 Windows XP SP2 和 Windows 2003 SP1 上的自定义工具。 根据操作系统版本,收集和查看 WWSAPI ETW 事件跟踪有几种不同的方法。
- 从命令行或运行菜单运行 eventvwr.msc。
- 单击右侧“操作”窗格上的视图链接,并启用“显示分析和调试日志”选项。
- 浏览到左侧窗格中的应用程序和服务日志 \Microsoft\Windows\WebServices 提供程序。
- 右键单击“跟踪提供程序”,然后选择“启用日志”。
- 运行方案。
- 刷新事件查看器页面时,应该回在开始看到 WWSAPI 跟踪条目。
wstrace.bat 批处理文件提供了一种方便的方法:
- 创建跟踪日志
- 删除跟踪日志
- 启用和禁用跟踪
- 更新跟踪级别(信息/错误/详细)
- 将跟踪日志转换为 CSV 文件
批处理文件对所有命令使用 logman.exe,但将日志转换为 CSV 文件除外,这需要自定义工具 (wstracedump.exe)。
以下命令创建使用信息、错误或详细级别的日志。 此命令需要提升的权限。
wstrace.bat create [info | error | verbose]
以下命令会删除日志。 此命令需要提升的权限。
wstrace.bat delete
以下命令启用跟踪。 您必须先创建日志。
wstrace.bat on
跟踪级别(信息、错误或详细)可以按如下所示进行修改:
wstrace.bat update [info | error | verbose]
若要转储输出,请使用以下命令:
wstrace.bat dump > temp.csv
事件将转储到 CSV 文件,直到按 Ctrl-C 或禁用跟踪。
wstrace.bat 创建的 CSV 文件是简单的逗号分隔变量文本文件。 这些文件可能在 Excel、记事本等中打开。
该文件的各列如下:
- TimeStamp - 记录事件的时间戳
- ProcessID - 记录事件的进程的 ULONG ID
- ThreadID - 记录事件的线程的 ULONG ID
- 事件 - 事件类型的枚举值可以是 ("api enter" | "api pending" | "api ExitSyncSuccess" | "api ExitSyncFailure" | "api ExitAsyncSuccess" | "api ExitAsyncFailure" | "io started" | "io completed" | "io failed" | "error" | "received message start" | "received message" | "received message stop" | "sending message start" | "sending message" | "sending message stop")
- 操作 - 正在调用的操作的名称。 这通常映射到要调用的 API。
- 错误 - 可选的 HRESULT 错误号
- 信息 - 有关事件的可选信息
为 WWSAPI 启用 ETW 跟踪
logman start wstrace -bs 64 -ft 1 -rt -p Microsoft-Windows-WebServices [flags [level]] [-o <EtlLogFileName>] -ets
创建并启动 ETW 跟踪会话。 Logman.exe 是所有受支持的平台上可用的内置 ETW 工具。 请注意,需要在 XPSP2 和 W2K3 上使用 Microsoft_Windows_WebServices 作为提供程序名称。 您可以运行 logman 查询提供程序以查看已注册提供程序的列表。 除非未注册,否则应列出 Microsoft-Windows-WebServices(或 Microsoft_Windows_WebServices)提供程序。 提供程序通常在安装过程中注册。 但是,也可以通过运行 wevtutil.exe im <ManifestFileName>(在 Windows Vista 及更高版本)或 mofcomp.exe <MofFileName>(在 XPSP2 和 W2K3 上)手动注册它。
标志可用于按其类型筛选跟踪。 它可以是以下跟踪类型的 OR 值。 如果未提供,则启用所有跟踪类型。
- 0x1 - API 入口/出口跟踪。
- 0x2 - 错误跟踪。
- 0x4 - IO 跟踪。
- 0x8 - SOAP 消息跟踪。
- 0x10 - 二进制消息跟踪。
级别可用于按跟踪级别筛选跟踪。 它应为下列值之一。 如果未提供,则启用所有跟踪级别。
- 0x1 - 致命跟踪。
- 0x2 - 错误跟踪。
- 0x3 - 警告跟踪。
- 0x4 - 信息跟踪。
- 0x5 - 详细跟踪。
EtlLogFileName 是要创建的 ETW 事件日志文件的路径(使用 .etl 扩展名)。 如果未提供,ETW 将选取一个随机名称,稍后可以查询该名称。 此文件不应驻留在用户的配置文件目录中。 ETW 事件日志文件 (.etl file) 采用二进制格式。 它可由 ETW 应用程序使用,但它不采用人工可读格式。 下一步介绍如何查看其内容。
运行方案
收集 ETW 事件日志文件。
logman stop wstrace -ets
停止 ETW 跟踪会话。 这是 ETW 停止记录事件时。 ETW 事件日志文件(在 EtlLogFileName 参数中指定的)可供使用。 可以在本地查看它(下面提供了说明),也可以发送给产品组进行调查。
使用 ETW 工具的端到端示例:
logman start wstrace -bs 64 -ft 1 -rt -p Microsoft-Windows-WebServices -o mytrace.etl -ets
echo .. 运行方案..
logman stop wstrace -ets
tracerpt mytrace.etl -o mytrace.xml
wstrace.htm
echo .. 在打开的页面 .中使用 mytrace.xml 和 wstrace.xsl。
Wstracedump.exe 是一种自定义开发的 ETW 使用者工具,用于处理 WWSAPI ETW 跟踪文件中的事件并生成人工可读输出。 它可以从所有受支持的平台生成输出。 有关详细信息,请参阅其用法 (wstracedump.exe -?)。
Tracerpt.exe 是查看 ETW 事件日志文件的内容并在所有受支持的平台上可用的工具。 它可用于从 ETW 事件日志文件生成 CSV、EVTX 或 XML 转储文件。 但是,生成的输出文件仅在 Windows Vista 及更高版本上具有人工可读跟踪。 这些说明介绍了如何生成 XML 转储文件并将其与 xsl 文件一起使用,以良好的格式显示跟踪(xsl 文件非常简单,如果需要不同格式,可能会更改)。
运行
tracerpt <EtlLogFileName> -o <OutputXMLFileName>
从二进制 ETL 文件创建 XML 转储(tracerpt.exe默认以 XML 格式创建输出文件。运行 tracerpt -?查看其他可用格式)。
此时,可以在 XML 文件中查看跟踪信息。 此外,您还可以打开 wstrace.htm 文件,并使用 xml 转储文件和 wstrace.xsl 文件以较好的格式查看跟踪。 请注意,文件需要位于本地计算机上才能在 IE 上使用此 html 文件。
启用跟踪时,管理员应考虑到它消耗额外的磁盘空间和计算能力。 恶意客户端或应用程序可能会耗尽系统资源,除非跟踪设置配置了合理的限制。 使用消息跟踪功能时,携带敏感信息(如凭据、个人信息等)的消息可以保存到磁盘,也可以由有权访问系统事件查看器的任何人查看。 作为此问题的缓解措施,Windows 2003 及更高版本上的系统管理员或管理员用户可以启用跟踪。 在 Windows XP 上禁用消息跟踪,用户可以打开跟踪。
以下枚举用于跟踪: