通过 HTTP 提供日志服务

通过 HTTP 提供日志服务

以下是我想要实现的目标:我有几个 Linux 服务器,上面部署了我的 Web 应用程序。目前,我的开发团队访问 Web 应用程序,运行他们的测试用例,然后通过 SSH 进入我的 Linux 机器来查看或获取日志。我不希望他们能够通过 SSH/FTP 进入任何服务器,我正在寻找一种解决方案,只通过 HTTP 和 HTTP 将日志发送给他们(没有 Linux 解决方案,例如 jail 等)。

由于服务器已经非常慢,无法真正处理更多的负载,我决定使用 Python 的 SimpleHTTPServer。对于每个包含所需日志的目录,我基本上都会创建一个 index.html 文件,其中只包含指向该日志文件的下载链接,然后我会在该目录中启动一个 SimpleHTTPServer。我需要在每个盒子上启动 3 个 SimpleHTTPServer,因为它们需要 3 个日志。

这很好,除了偶尔http://服务器网址:端口用于访问某个日志的 URL 有时会达到 700MB 左右,但会停止响应(在 Google Chrome 中显示:未收到数据,在 IE 和 FF 中仅显示空白页)。此时,该端口上的 SimpleHTTPServer 仍处于运行状态,并显示在正在运行的进程中。

到目前为止,我只是通过终止并启动该端口上的 SimpleHTTPServer 来修复此问题,但我正在寻找一个永久的解决方案。奇怪的是,这种情况只发生在其中一个日志上,我已经厌倦了切换端口号,因为我认为可能存在冲突或其他问题。

有人可以建议一个使用 HTTP 的解决方案,它和 SimpleHTTPServer 一样轻量,而且不需要那么多维护。

答案1

*NIX 系统已经包含一个守护进程,它非常擅长收集日志/消息并将它们发送到中央主机 ( [syslogd][1])。
您可以利用此功能,通过配置syslogd将某些设施发送到日志主机,然后修改测试脚本以记录到该设施,或者简单地将其输出通过管道传输到程序[logger][2]

然后,您可以在日志主机上运行您选择的 Web 服务器(或执行您想要的任何其他分析),而不会给您的服务器带来不必要的负载,或者必须打开潜在的安全漏洞来使日志可用。

这不是“使用 HTTP 的解决方案”(至少不是直接使用 HTTP),但它可能比在每个盒子上运行 Web 服务器更好。

答案2

我认为 nginx 可以做到。它是一个高效的 Web 服务器,可用于提供静态内容。

我认为最好将日志文件拆分成几个较小的文件。这将节省带宽并有助于降低下载造成的服务器负载。

相关内容