Windows事件日志性能

有没有人有一个想法如何有效的Windows事件日志是?

我有一个场景,每分钟可以logging许多事件。

Windows事件日志是否被很好的处理了大量的事件?

例如就性能而言,它会与SQL Server相媲美吗?

最后是可以使日志到数据库

Windows事件日志足够强大,足以每秒处理许多事件,所以取决于每分钟有多less事件(100个与100000比较),以及您需要处理的数据取决于是否使用事件logging与否。 如果我只是需要使用它来解决事件日志是相当不错的,但如果我需要分析数据,我总是把它放在一个数据库或从事件日志和parsing。 有一些这样的工具,但如果你可以直接进入数据库,这是一个不必要的步骤。

我不确定在确切的规格,但较轻的logging插入事件日志应该比运行本地SQL服务器消耗更less的资源。 在性能方面,我会说SQL服务器比事件日志更好。 我相信事件日志也存储在内存中。

请记住,事件日志的大小也是有限的。 如果您需要保留大量日志,则需要运行自动化脚本来导出,并确保事件日志设置正确,以避免丢失信息。 如果事件日志的大小最大,则不会保留日志直到它被清除。

事件日志可以logging到数据库或系统日志,但老实说,我不会build议。

我会build议你衡量你的select,但如果你正在谈论繁重的交易考虑一个数据库。

几年前(Windows 2000服务器是最新的)微软顾问告诉我,事件日志系统对于每秒几个事件是好的,但是logging数百个将是一个坏主意(但它可能会应付)。 对于高日志量Windows事件跟踪(ETW)是一个更好的select(但开发人员或pipe理员很难获得可操作的信息)。

然而,在Vista / 2008中,事件系统完全重新工作(支持更多的日志,不会将整个日志映射到内核内存中),所以好的做法可能已经改变了。

此外,ETW支持现在在.NET和事件日志子系统中,因此学习曲线显着降低。

如果您正在login到外部主机(如数据库),请考虑如何logging连接到该服务器的错误(即数据库不能是唯一的loggingpath)。

你还需要考虑事件的消费者。 如果检查状态或诊断问题以提取所需信息没有效果,则整个logging工作将失去价值。

而不是让事件日志进入数据库,可以在事实之后导入它们。 如果你需要高效的查询你的数据,这可能是要走的路。

对于基于标准查询和检索事件数据,它绝对不能与SQL相媲美,而且它的devise也不是这样。

有许多应用程序可以将事件数据转发到中央服务器。 其中之一是Snare: http : //www.intersectalliance.com/projects/SnareWindows/index.html

Windows 2008/7 / Vista具有将事件转发给集中式“收集器”的集成function,但实际上这不是数据库。 以下是如何configuration的一个例子:

Windows事件收集器
http://msdn.microsoft.com/en-us/library/bb427443%28v=vs.85%29.aspx

Windows事件收集器设置源启动的订阅。
http://msdn.microsoft.com/en-us/library/bb870973(v=vs.85).aspx