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

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

概括

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

语境

我们的系统管理员(正确地)收紧了开发人员对生产服务器的访问权限。结果之一是:在支持客户问题时,开发人员将无法再轻松访问日志文件。

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

我想设置将日志自动复制到中央“日志服务器”的功能。开发人员/支持人员在支持问题时将拥有对“日志服务器”文件系统的读取权限。

以下是我们的文件系统结构示例。每个客户一个目录。其中,每个应用程序一个目录。每个应用程序都有不同的子目录结构和日志文件名。

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/

期望的结果

  • 我想要结合使用远程管理工具(puppet 或 chef)与同步工具(rsync)和调度程序(cron)来进行定期同步
  • 轻松实现多个机器的远程管理。例如,在一个地方编辑“配置文件”,然后将其推送到所有服务器。

环境

  • Windows 服务器 2008
  • Windows 商店。但是可以安装 cygwin。
  • 我个人熟悉 rsync 和 cron,但不熟悉 puppet 和 chef。仅供参考。

提前致谢!

答案1

我建议使用 syslog。它是你想要的标准。

您的应用程序需要能够使用 syslog,最好是使用远程 syslog 服务器。看起来您使用的是 Java?希望您使用的是 Log4J,因为它会使用 syslog。然后将它们指向您的 syslog 服务器。Windows 有可用的商业和免费 syslog 服务器。

或者,您可以将应用程序中的所有内容写入 Windows 事件日志,然后使用事件日志订阅/收集将它们发送到您被允许访问的另一台 Windows 机器。

您会发现,当您有多个节点时,仅使用纯文本日志执行此操作很难管理。当然,您可以只请求对日志当前所在目录的只读访问权限。

相关内容