从远程计算机收集日志文件的最佳方法?

时间:2009-01-26 22:35:31

标签: windows logfiles

我有超过500台机器分布在遍布三大洲的广域网上。我需要定期收集每个刀片上本地硬盘上的文本文件。每台服务器都运行Windows Server 2003,文件安装在共享上,可以作为\ server \ Logs远程访问。每台机器都有许多文件,每个文件可以有几个Mb,并且可以通过压缩来减小尺寸。

到目前为止,我已尝试使用Powershell脚本和一个简单的Java应用程序来进行复制。这两种方法都需要几天才能收集500Gb左右的文件。是否有更好的解决方案更快更有效?

7 个答案:

答案 0 :(得分:3)

我想这取决于你对它们做了什么...如果你要将它们的度量数据解析到数据库中,那么在每台机器上安装解析实用程序来解析并加载到你的数据库会更快中央数据库同时进行。

即使你正在做的只是压缩和复制到一个中心位置,在.cmd文件中设置这些命令并安排它自动在每个服务器上运行。然后,您将在所有这些服务器之间分配工作,而不是强制您的一个本地系统完成所有工作。 : - )

答案 1 :(得分:2)

首先想到的改进是发送整个日志文件,而只发送最后一次发货后的记录。这当然是假设文件随着时间的推移而累积,并且每次都不是全新的。

您可以通过各种方式实现此目的:如果文件具有您可以依赖的日期/时间戳,则通过过滤器运行它们以从中考虑删除旧记录并转储剩余记录就足够了。如果没有这样的鉴别器,我会跟踪发送的最后一个字节/行并在发货前前往该位置。

无论哪种方式,目标只是发送内容。在我们自己的系统中,日志通过一个服务来发送,该服务在写入日志时复制它们。这需要处理日志文件的小型服务,但减少了捕获日志和减少带宽使用的延迟。

答案 2 :(得分:1)

每个服务器应该:

  • 管理自己的日志文件(上传前启动新日志,上传后删除已发送日志)
  • 命名文件(或前置元数据),以便服务器知道哪个客户端发送了它们以及它们涵盖的时间段
  • 在发货前压缩日志文件(压缩+ FTP +解压缩通常比单独FTP更快)
  • 将日志文件推送到中心位置(FTP比SMB快,可以使用“-s:scriptfile”自动执行Windows FTP命令)
  • 在因任何原因无法推送日志时通知您
  • 按错开的时间表完成上述所有操作(以避免中央服务器超载)
    • 也许使用服务器的最后一个IP八位字节乘以一个常数来从午夜起以分钟为单位进行补偿?

中央服务器可能应该:

  • 接受发送的日志文件并将其排队等待处理
  • 优雅地处理两次接收相同的日志文件(它应该忽略还是重新处理?)
  • 根据需要解压缩并处理日志文件
  • 根据您的保留政策删除/归档已处理的日志文件
  • 当服务器最近没有推送其日志时通知您

答案 3 :(得分:0)

我们在这里有一个类似的产品。我们的解决方案是让生成日志文件的计算机每天以随机交错模式将它们推送到NAT。这解决了许多基于拉取的方法的问题,包括使服务器忙碌几天的成熟读写时间。

答案 4 :(得分:0)

这听起来并不像存储服务器带宽会饱和,因此您可以并行地从不同位置的多个客户端拉出来。主要问题是,减缓整个过程的瓶颈是什么?

答案 5 :(得分:0)

我会做以下事项:
编写一个程序在每台服务器上运行,执行以下操作:
监控服务器上的日志
按特定的时间表压缩它们 将信息传递给分析服务器。

编写另一个程序,该程序位于核心srver上,执行以下操作:
当网络/ CPU不太忙时拉动压缩文件 (这可以是多线程的。)
它使用从终端计算机传递给它的信息来确定下一个要获取的日志 解压缩并连续上传到您的数据库。

这应该为您提供一个解决方案,提供最新信息,最短的停机时间 缺点是网络/计算机的使用相对一致,但这通常是一件好事。

它还可以轻松管理系统,检测任何需要解决的问题或问题。

答案 6 :(得分:0)

NetBIOS副本的速度不如FTP。问题是您不希望每台服务器上都有FTP服务器。如果您无法在每台服务器上本地处理日志文件,则另一种解决方案是让所有服务器通过FTP将日志文件上载到您可以处理的中心位置。例如:

将FTP服务器设置为中央收集点。在每台服务器上安排任务以压缩日志文件并将存档FTP传输到中央FTP服务器。您可以编写一个程序,使用schtasks.exe等工具远程自动调度任务:

KB 814596: How to use schtasks.exe to Schedule Tasks in Windows Server 2003

您可能希望将上传错开回FTP服务器。