microsoft/ETW2JSON

GitHub: microsoft/ETW2JSON

将 Windows ETW 日志文件转换为 JSON 格式的工具与库,降低 ETW 数据分析门槛。

Stars: 92 | Forks: 20

# ETW2JSON ETW2JSON 是一款使用 Newtonsoft.Json 库将 ETW 日志文件 (.ETL) 转换为 JSON 的工具。它可以作为独立的命令行工具使用,接受 ETL 文件的路径和输出路径作为输入;或者,你也可以传入自定义的 Newtonsoft.Json 的 ``JsonWriter`` 类实现。 ## 库的用法 ``ConvertToJson(JsonWriter jsonWriter, IEnumerable inputFiles, Action reportError)`` ## 命令行用法 ``ETW2JSON C:\MyFile.etl C:\MyFile.Kernel.etl --output=C:\MyFile.json`` ## Nuget 包 该库已在 Nuget 上发布 -- https://www.nuget.org/packages/ETW2JSON/1.3.10 ## 为什么是 JSON? 将 ETW 日志文件 (.ETL) 转换为 JSON,使您能够获取大量以前仅限于专业 ETW 工具或库才能访问的数据。此工具的目标是通过转换为普遍适用的人类可读格式,使广大的开发者和运维人员能够更轻松地访问 ETW 数据。 ## 收集数据和使用 ETW2JSON 的典型用例与工作流 **背景**:你是一个 DevOps 团队,在运行 .NET 代码的 Windows 上运行着云服务,并且你使用 .NET EventSource 记录了部分数据。代码的其他部分则直接将 JSON 写入磁盘。此外,你还希望看到来自 Windows 和 .NET CLR 的数据能与你的日志数据交织在一起。 **选择你的 ETW 收集工具**:[Microsoft TraceEvent](https://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent/),或者 Windows 命令行中普通的 ``logman``。 现在你拥有了一个 ETL 文件或一组 ETL 文件,考虑到你运行的是云服务,这组 ETL 文件可能是持续不断的。 收集完成后,你可以使用 ETW2JSON 按照以下方式将 ETL 文件转换为 JSON: ``ETW2JSON myFile.etl --output=myFile.json`` 现在,你可以在各种 JSON 日志查看器中查看这些数据,将其与你自己的非 ETW 事件源合并,将数据推送到云日志合并系统(Kafka、ElasticSearch 等),或者将其存储在你[最喜欢的 JSON 数据库](http://www.postgresql.org)中。 ## 它能理解 Kernel、.NET EventSource、XPERF 等事件吗? ETW2JSON 是一个能理解 Windows MOF 类事件、Windows Vista 清单事件和 EventSource .NET 事件的库。它还能理解 XPERF (WPR) 作为其合并过程的一部分(用于提供 PDB 信息)为 Windows Performance Recorder 等分析器工具添加的事件。 ## 输出示例 这是 ETW2JSON 针对类型为 ``CLRTrace/CLR Method/MethodDCEndVerbose`` 的单个事件记录的输出 -- 你可以使用你最喜欢的 JSON 查看器来查看这些数据。 ``` { "CLRTrace/CLR Method/MethodDCEndVerbose":[ { "MethodIdentifier":140712944189680, "ModuleID":140712943752376, "MethodStartAddress":140712947662480, "MethodSize":174, "MethodToken":100669671, "MethodFlags":0, "MethodNameSpace":"System.Xml.Schema.SchemaCollectionCompiler", "Methodname":"CompileGroup", "MethodSig":"instance void (class System.Xml.Schema.XmlSchemaGroup)" } ] } ``` ## 微软开源行为准则 本项目采用了[微软开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参阅[行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/),或联系 [opencode@microsoft.com](mailto:opencode@microsoft.com) 提出任何其他问题或意见。
标签:ElasticSearch, ETL转JSON, ETW, EventSource, Kafka, Newtonsoft.Json, NuGet包, SonarQube插件, TraceEvent, Windows事件跟踪, 代码示例, 多人体追踪, 开源库, 搜索引擎爬虫, 数据分析, 数据转换, 日志处理, 日志聚合, 日志解析, 监控与诊断, 证书伪造