我可以使用什么软件通过SSH从多个远程服务器检索日志文件?

我知道我可以使用脚本来做到这一点,但是我想知道是否有这样一个“现成的”软件,可以让我configuration我想要获取的主机(和文件path)间隔)从?

我打算设置LogStash来parsing日志(并将它们发送到集中的日志存储),但LogStash将parsing的许多日志驻留在远程主机上的文件中。 如果为此定制的软件已经存在,那么这将真正简化configuration日志文件检索的工作。

你似乎想要的是一个称为“日志托运人”的组件(不要与数据库复制混淆)。 Logstash本身提供一个; 它被称为“代理”,它是用Java编写的。 如果你不想在你所有的服务器上安装[特定版本的Java](这是一个非常合理的反对意见),那么有很多select。

日志托运人有几个共同的属性,你可以比较它们:

  • 他们通常可以实时(近)实时查询文件,轮询(普通)或使用inotify;
  • 他们通常会很好地处理日志旋转事件;
  • 他们往往会用多种语言之一来实施。
  • 他们将能够从(很多)各种来源读取,包括各种types的数据库,或者Windows事件日志;
  • 商业支持选项往往是可用的,以及免费的select; 免费的商业版本可能会提供更多的input选项;
  • 它们在跨平台可用性方面有所不同;
  • 不同平台的许可成本可能会有很大差异(例如,Windows与Linux的rsyslog)
  • 可扩展性和占用空间差异显着;
  • 他们可能(不)能够通过SSL传输日志;
  • 如果接收者不可用,他们可能(不)能够缓冲事件;
  • 他们可能(不)能够转换/过滤消息;
  • 他们有不同程度的可脚本化;

Logstash书籍列出了一些; 如伐木工(用Go编写,而不是由我的操作系统打包),还有很多其他的。

rsyslog也可以从文件中读取,但Windows的许可成本可能会让你失望; 但是如果你有一个恰好安装了rsyslog的RHEL / Centos /其他设备(由于可支持的原因,你通常没有安装任何你喜欢的设备的自由),这可能是有用的。

我目前正在使用nxlog,这是写在C; 它相当小,没有恼人的运行时或构build依赖; 至less在Linux和Windows上运行; 相当好的移植; 易于在没有提供包的平台上构build; 有精美的文档(但还可以更好); 一个响应式开发者 商业支持; 可以通过SSL传输; 从一堆不同的input读取,包括文件,系统日志,Windows事件日志等; 做了一些处理,包括应用一堆标签在Logstash中进行后续处理; 输出到一大堆不同的东西(我发送我的中央日志服务器,缓冲区,写入磁盘,旋转的文件,并发送到Logstash数据到Elasticsearch)

Nxlog并不完美; 它有一些错误,特别是在configurationparsing(注意缺less分号)周围,而且当你想尝试做更复杂的事情时,configuration的语义会变得有点混乱。 我碰到至less一个内存泄漏,另一个问题需要我同时执行一些挂起进程检测,但是除此之外,我仍然非常满意我们使用nxlog到目前为止我们的机队到目前为止,我们正在通过它推动大量的数据。

但是,由于您明确提到了使用SSH(这是一个真正的要求?),您可以设置一个文件的授权密钥scp,然后在本地有logstash提要; (假设你每次都重新调用logstash)利用logstashlogging文件起始位置的能力。 要注意的一点是,你可能不希望inode改变,所以用'…> file.txt'覆盖文件,这将replace内容,但不能replace文件本身。 但是,这可能会由于对数旋转而受挫。 您确实需要远程计算机上的日志托运人。 使用rsyslog可能是有用的,如果有一个最小的接触环境的要求,虽然你不能通过SSL传输(虽然也许更新版本的rsyslog将允许)。

希望有帮助,卡梅隆