如何将远程pipe理工具(puppet或chef)与同步工具(例如rsync)结合使用将多个服务器的日志文件发送到中央服务器?

概要

我如何使用远程pipe理工具(puppet或chef)与同步工具(例如rsync)和调度程序(cron)结合将日志文件从多个服务器发送到中央服务器?

上下文

我们的系统pipe理员(正确)收紧了开发人员访问生产服务器的权限。 其中一个后果就是:在支持客户问题时,开发者尤其不能轻松访问日志文件。

目标:将文件发送到通用日志服务器

我想设置日志自动复制到中央“日志服务器”。 支持问题时,开发人员/支持人员可以读取“日志服务器”文件系统。

这是我们的文件系统结构的一个例子。 每个客户一个目录。 在此,每个应用程序一个目录。 每个应用程序有不同的子目录结构和日志文件名称。

Server A d:/ Instances/ CustomerFoo App 101/ logs server.log access.log App 201/ logs stdout.log jdbc.log timing.log CustomerBar/ App 101/ .... App 301/ logs/ monitor.log 

这些将会到一个像这样的结构的中央服务器。 (客户名称在企业内是唯一的,所以我们不会有任何碰撞)

 LogServer d:/ logfiles/ CustomerFoo App 101/ logs/ App 201/ logs/ ... CustomerBar/ App 101/ .... App 301/ logs/ 

期望的结果

  • 我想要一个远程pipe理工具(puppet或chef)结合同步工具(rsync)和调度程序(cron)的组合来执行定期同步
  • 易于远程pipe理多个盒子。 即编辑“configuration文件”在一个地方,并推出到所有的服务器。

环境

  • Windows Server 2008
  • Windows商店。 不过打开来安装cygwin。
  • 我个人对rsync和cron很熟悉,但是既不是木偶也不是厨师。 FWIW。

提前致谢!

我build议系统日志。 这是你想要的标准。

您的应用程序需要能够说系统日志,最好是远程系统日志服务器。 看起来你正在使用Java? 希望你使用的是Log4J,因为这会说syslog。 然后你把它们指向你的系统日志服务器。 有可用于Windows的商业和免费系统日志服务器。

或者,您可以将应用程序中的所有内容写入Windows事件日志,然后使用事件日志预订/集合将这些事件转移到您允许访问的另一台Windows计算机。

在只有纯文本日志的情况下,如果有多个节点,就很难pipe理,正如你所发现的那样。 当然,您可以只请求只读访问日志当前所在的目录。