我有一个多层应用程序,由多个不同子网上的服务器组成(这些子网中的每一个专用于应用程序目的,它们不提供独立于应用程序的其他服务器)。 那些服务器是windows,debian,freebsd,将来也可能有其他的。
我想为我的系统build立一个集中的日志logging机制。 问题是我想先将数据收集到一个DMZ,然后由位于不同本地networking子网的日志服务器访问。
我还需要logging我的networking设备,但对于我所关心的所有人来说,这可能是完全不同的日志logging服务器(尽pipe如果情况并非如此,情况会更好)。
你将如何推动这种types的伐木? 架构是为了安全目的而分层的,不会改变。
我已经看到Scribe和Logstash是可行的解决scheme。 你会推荐他们做一个如前所述的承诺吗?
使用ssh机制的脚本的执行方式是什么?
你可以使用任何现代的系统日志服务器(我的build议是syslog-ng
因为我熟悉它,但rsyslog
是另一种select)。
几乎每个系统都以某种方式支持系统日志(我曾经使用的每个专业级路由器/交换机,Unix机器都这样做,而且我相信Windows甚至可以将事件日志消息发送到系统日志服务器),这使得它成为一个非常好的select。
系统日志协议传统上是不安全的UDP数据报,但现代系统日志服务器有TCP支持,而且我知道syslog-ng
也支持SSL / TLS。
就您如何收集日志数据而言,实施策略各不相同。
一种select是只允许所有的主机连接到系统日志服务器,让他们在那里发送他们的日志消息。 这是相对简单的,但可能不太安全(您需要打大量的防火墙漏洞,或允许整个宇宙与日志服务器交谈)。
另一个select是本地日志聚合器转发到中央日志服务器(类似于您在问题中描述的体系结构)。 这通常被认为是一个更好的select,主要有两个原因:
这很容易确保
中央日志服务器只需要接受“授权”客户端的连接,本地日志服务器只需要接受本地networking的连接。
它为您提供了一些冗余
如果中央日志服务器closures以进行维护,则仍然在本地服务器上收集日志,并且可以在中央服务器再次可用时将其转发。