概要
我如何使用远程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/
期望的结果
环境
提前致谢!
我build议系统日志。 这是你想要的标准。
您的应用程序需要能够说系统日志,最好是远程系统日志服务器。 看起来你正在使用Java? 希望你使用的是Log4J,因为这会说syslog。 然后你把它们指向你的系统日志服务器。 有可用于Windows的商业和免费系统日志服务器。
或者,您可以将应用程序中的所有内容写入Windows事件日志,然后使用事件日志预订/集合将这些事件转移到您允许访问的另一台Windows计算机。
在只有纯文本日志的情况下,如果有多个节点,就很难pipe理,正如你所发现的那样。 当然,您可以只请求只读访问日志当前所在的目录。