我如何被动地监视Windows事件日志?

如何远程监控Windows事件日志,以便在发生特定事件时自动通知我?

有很多主动的监控解决scheme,但需要人们的关注或不断的投票。 我需要一个被动的解决scheme,当一个特定的事件发生时,它只会产生一个通知

Windows Server具有内置的Windows事件日志/查看器的SNMP陷阱生成器,可以发送任意事件发生时的陷阱。

陷阱forms(OID)

这些陷阱将以下列forms符合Microsoft私营企业MIB分支:

1.3.6.1.4.1.311.1.13.Xnnnnnnnnn.. 

每个“n”是来自事件日志源名称的ASCII字符八位位组的十进制编码,并且X指定要跟随的字符数。

因此,例如,源“Prefect”(如事件查看器中所示)生成的陷阱将显示为:

 1.3.6.1.4.1.311.1.13.7.80.114.101.102.101.99.116 

Windows 2000服务器不完全支持这一点,并会产生一个略有不同格式的陷阱,但程序是相同的。 所有较新版本的Windows服务器均正确支持此function

configuration陷阱发送

有两个内置的工具,您将用来设置陷阱生成。

evntwin :创build事件日志消息到SNMP陷阱的映射evntcmd :加载由evntwin创build的映射,以便生成陷阱

从命令提示符运行evntwin:这会产生一个GUI。 在configurationtypes下select“自定义”,然后select“编辑”。 您现在将看到所有可能的事件源列表。 在您感兴趣的来源下,select您希望生成陷阱的特定事件ID。 然后,点击“添加”。

现在,您将看到陷阱的实际OID,具体ID以及在发送陷阱之前设置事件发生的基于时间的阈值的选项。

重复,直到您为每个您关心的特定陷阱/事件组合创build一个映射。 然后,单击“应用”,突出显示所有映射,然后单击“导出…”保存文件,然后退出应用程序。

现在,再次从命令行运行evntcmd,指定刚刚创build的文件的名称:

 evntcmd myeventfile.cnf 

从这一点开始,您指定的事件将生成SNMP陷阱,并将其发送到您在SNMP服务设置中configuration的所有陷阱接收器目的地。 像处理普通的SNMP陷阱一样处理它们。

你可以使用具有通知的Event Sentry

实时事件日志监控是EventSentry的核心function,允许您监控所有标准(应用程序,安全,系统,DNS服务器,文件复制服务,目录服务)和自定义事件日志。 事件日志条目可以被转发到各种即时通知(例如电子邮件,寻呼机,SNMP等)或为合并而devise的通知(例如数据库,文件等)。


如果您有足够的时间熟悉脚本,您可以使用现有的代码和工具(如SysInternal的PsLogList ,一个脚本来监视来自Microsoft的ScriptCenter 的事件日志 , LogParser和免费的SMTP命令行工具(如Blat或bmail))来构buildDIY解决scheme。

http://www.blat.net/

对于2008,Vista,XP和2003,您可以使用Windows远程事件日志订阅服务。 这是Vista和2008的本地function。对于2003和XP,您需要特定的Service Pack。 Windows使用RMI从远程系统收集事件日志,与syslogs非常相似,但是以更安全的方式进行收集。 您也可以使用组策略将所有服务器转发到单个2K8,Vista或2003服务器。 您还可以在事件查看器中设置通知/警报。

如果您喜欢脚本,您可以编写一个WMI事件接收器,当新事件追加到事件日志时,可以接收通知。 我已经将这样的脚本的VBScript版本作为服务运行,并且在接收到它认为“有趣”的事件(通过configuration文件中的正则expression式匹配)后,它会生成SMTP电子邮件。 这是一个相当简单的脚本,但我不能发布它,因为它“属于”我写的客户。

事件触发器可能会帮助你( http://technet.microsoft.com/en-us/library/cc773308(WS.10).aspx )。 查找eventquery.vbs。

我认为eTrap是监视Windows事件的完美解决scheme。