通过查看Windows事件,我们可以了解系统运行中产生的错误或警告,对日常运营监控提供了重要的数据来源,本文简要介绍一下如何使用Windows Azure Diagnostics捕获由Hosted Web Core产生的Windows事件,下面是代码:
var cfg = DiagnosticMonitor.GetDefaultInitialConfiguration();
// HWC uses the event log to indicate what’s broken.
// This config setting is really handy when debugging bad config.
cfg.WindowsEventLog.DataSources.Add(“Application!*[System[Provider[@Name=’HostableWebCore’]]]”);
diagnosticMonitor = DiagnosticMonitor.Start(“DiagnosticsConnectionString”, cfg);
当你添加一个Windows事件日志数据源时,你需要给你想记录的事件指定一个XPath选择原则。使用Windows Azure Diagnostics,你可以收集以下类型的诊断数据:
数据源 | 默认配置 | 支持的角色类型 |
Windows Azure 日志 | 默认要收集,需要在 web.config 或 app.config 中增加跟踪监听器 | |
IIS 7.0日志 | 默认要收集 | 仅限Web角色 |
Windows诊断基础日志 | 默认要收集 | Web和Worker角色 |
失败的请求日志 | 默认不收集 | 仅限Web角色 |
Windows事件日志 | 默认不收集 | Web和Worker角色 |
性能计数器 | 默认不收集 | Web和Worker角色 |
崩溃转储 | 默认不收集 | Web和Worker角色 |
自定义错误日志 | 默认不收集 | Web和Worker角色 |
要启用对Windows事件日志的收集,要获得默认的初始配置,然后向配置中加入Windows事件日志数据源,使用一个XPath表达式指定你想要收集的事件,下面的代码显示了如何配置诊断监听器收集“系统”事件:
public override bool OnStart()
{
DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
// Add event collection from the Windows Event Log
diagConfig.WindowsEventLog.DataSources.Add(“System!*”);
// Start diagnostics with this custom local buffering configuration
DiagnosticMonitor.Start(“DiagnosticsConnectionString”, diagConfig);
return base.OnStart();
}
注意,Windows Azure Diagnostics不能读取Windows事件日志中的“安全”事件,因为运行Windows Azure中的服务使用的账号往往没有读取安全事件的权限。
在Windows事件查看器中,我们可以创建一个自定义视图。
图 1 过滤显示Hosted Web Core事件源
切换到XML标签,可以看到XPath格式的事件过滤器。
图 2 XPath格式的事件过滤器
你也可以手工修改一下,然后将其传递给WindowsEventLog.DataSource.Add 。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国