在logstash中,逻辑上不同的应用程序日志是否需要单独的文件输入?

在logstash中,逻辑上不同的应用程序日志是否需要单独的文件输入?,logstash,Logstash,(Windows上的Logstash 1.4.2) 在我们的系统中,“产品”是相关web应用程序的高级分组。每个web应用程序都配置为编写一个专用日志文件,以应用程序名称命名(例如MyProduct.ApplicationA.log和MyProduct.ApplicationB.log)。给定产品的所有web应用程序都将其日志文件写入同一文件夹(c:\Logs\MyProduct\;c:\Logs\MyOtherProduct) 我需要设置logstash来监视所有产品的所有应用程序的所有日志文

(Windows上的Logstash 1.4.2)

在我们的系统中,“产品”是相关web应用程序的高级分组。每个web应用程序都配置为编写一个专用日志文件,以应用程序名称命名(例如MyProduct.ApplicationA.log和MyProduct.ApplicationB.log)。给定产品的所有web应用程序都将其日志文件写入同一文件夹(c:\Logs\MyProduct\;c:\Logs\MyOtherProduct)

我需要设置logstash来监视所有产品的所有应用程序的所有日志文件。我曾希望使用:

input {
    file {
        path => "c:/Logs/**/*.log"
        exclude => ["Info.*", "Warn.*", "Error.*"]
        sincedb_path => "c:/logstash/.sincedb"
        sincedb_write_interval => 1
    }
}
在第一次运行时,我可以看到大量的输出被发送到stdout输出,我想这就是文档所说的“第一次接触”

一旦(来自多个应用程序的)所有日志文件都经过初始解析,如果应用程序生成日志条目,它们似乎会被拾取并输出。一切都很好

然而,如果我重新启动logstash,所有日志文件似乎都会再次被解析——就好像sincedb不受尊重一样。我已经研究了其他SO问题,这些问题详细说明了复制和重新分类的类似经验(例如),但是我相信我有额外的信息,可能表明我实际使用的文件输入不正确

如果我改为这样设置多个文件输入:

file {
    path => "c:/Logs/MyProduct/MyProduct.ApplicationA.log"
    exclude => ["Info.*", "Warn.*", "Error.*"]
    sincedb_path => "c:/logstash/.sincedb_A"
    sincedb_write_interval => 1
}
file {
    path => "c:/Logs/MyProduct/MyProduct.ApplicationB.log"
    exclude => ["Info.*", "Warn.*", "Error.*"]
    sincedb_path => "c:/logstash/.sincedb_B"
    sincedb_write_interval => 1
}
然后重新启动logstash,不重新分析现有文件,并尊重逻辑分组的sincedb。这让我相信,也许我对文件输入的想法是错误的:我是否必须为每个应用程序配置一个单独的文件输入

(查看sincedb的内容,只有一行,例如

0 0 2 661042
而且很明显,无法跟踪多个文件)


我是否遗漏了一些东西,可以让我拥有一个通用的球状样式的全局声明,而无需对每个应用程序进行单独的配置?

看起来您遇到了一个问题


在修复错误之前,为每个文件添加带有单独sincedb_路径的文件{}块可能是最好的解决方案。

OK-谢谢。至少我正确地解释了文档,这是Windows中的一个bug。没人担心这只虫子已经快3岁了。。