Windows Server 2016环境下能否将Windows事件日志采集至Application Insights?
Application Insights 采集 Windows 事件日志的支持情况及实现方式
首先明确回答:Application Insights 完全支持聚合 Windows 事件日志,不过需要通过配置特定模块或工具实现,默认不会自动采集这类日志。结合你提到的 Windows Server 2016 环境,下面分享两种可行的实现方案:
1. 使用 ETW Collector NuGet 包(你尝试的方向是正确的)
你提到的 Microsoft.AI.EtwCollector NuGet 包正是官方用于采集 ETW(Event Tracing for Windows)事件的工具,而绝大多数 Windows 系统事件日志都是通过 ETW 发布的,所以这个方案完全可行。
补充完整配置示例
在你的 ApplicationInsights.config 文件中,需要明确配置要采集的 ETW 提供程序,比如你提到的崩溃转储日志,再加上系统日志的配置示例:
<TelemetryModules> <!-- 引入 ETW Collector 模块 --> <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.AI.EtwCollector"> <Sources> <!-- 采集崩溃转储相关事件,级别设为 Verbose --> <Add ProviderName="Microsoft-Windows-Crashdump" Level="Verbose" /> <!-- 采集系统日志的警告及以上级别事件 --> <Add ProviderName="Microsoft-Windows-EventLog-System" Level="Warning" /> <!-- 可根据需求添加更多提供程序,比如应用程序日志 --> <Add ProviderName="Microsoft-Windows-EventLog-Application" Level="Error" /> </Sources> </Add> </TelemetryModules>
注意要确保安装的是官方正确的 NuGet 包:Microsoft.AI.EtwCollector,避免和其他同名包混淆。
2. 使用 Application Insights Agent(无需修改代码)
如果不想改动应用代码,也可以用官方的 Application Insights Agent(曾用名 Status Monitor)来配置采集 Windows 事件日志:
- 先在 Windows Server 2016 上安装 Application Insights Agent
- 打开 Agent 的配置界面,找到「Windows Event Logs」选项
- 添加你需要采集的日志类别(比如应用程序、系统、安全),并设置要采集的日志级别(Error/Warning/Information 等)
- 保存配置后,Agent 会自动读取指定的 Windows 事件日志,并发送到你的 Application Insights 资源中
关键注意事项
- 确保运行应用或 Agent 的账号拥有足够权限读取 Windows 事件日志,建议将账号加入「Event Log Readers」组,或者赋予本地管理员权限
- 如果不确定 ETW 提供程序的名称,可以用命令行工具
wevtutil gp查询,比如输入wevtutil gp Microsoft-Windows-EventLog-System就能查看系统日志对应的提供程序详情
内容的提问来源于stack exchange,提问作者CosX
相关产品推荐
相关产品推荐

