使用regex作为Logstash中的输入文件路径

使用regex作为Logstash中的输入文件路径,logstash,Logstash,我想用logstash解析日志文件目录。 当日志的格式如下所示时: server-20140604.log server-20140603.log server-20140602.log input { file { path=>["D:/*.log"] } } server.log server.log.1 server.log.2 client.log client.log.1 client.log.2 没问题,我使用的地球仪如下: server-20140604.lo

我想用logstash解析日志文件目录。 当日志的格式如下所示时:

server-20140604.log
server-20140603.log
server-20140602.log
input {
 file {
   path=>["D:/*.log"]
 }
}
server.log
server.log.1
server.log.2
client.log
client.log.1
client.log.2
没问题,我使用的地球仪如下:

server-20140604.log
server-20140603.log
server-20140602.log
input {
 file {
   path=>["D:/*.log"]
 }
}
server.log
server.log.1
server.log.2
client.log
client.log.1
client.log.2
但我的日志格式如下:

server-20140604.log
server-20140603.log
server-20140602.log
input {
 file {
   path=>["D:/*.log"]
 }
}
server.log
server.log.1
server.log.2
client.log
client.log.1
client.log.2

所以我想知道如何告诉logstash解析文件夹中以“server”表达式开头的所有文件。我真的需要这样做,因为文件夹中有其他文件(即客户端日志),我不想解析,但也无法从文件夹中删除。

使用此配置,我只能解析所有以前缀
server
开头的日志文件

input {
        file {
                path => ["D:/server*"]
        }
}

output {
    stdout {
                codec => rubydebug
        }
}
我认为您可能遇到的问题是
start\u位置
config。这意味着logstash从哪里开始读取日志。请参阅。请记住,此选项仅用于修改第一次接触时文件是新的且以前未见过的情况。如果以前已看到文件,则此选项无效

当您停止logstash时,logstash将在您的主目录中保存一个.sincedb*。下次启动时,logstash将根据.sindb*开始读取文件。如果不将新日志输入到
server.log
,logstash将永远不会解析旧日志


您可以尝试在启动日志存储之前删除所有.sincedb,并将
start\u posistion
添加到配置中。在您的评论中,您说如果您覆盖了
server.log
logstash可以从一开始解析该文件,这是因为logstash会将其检测为一个新文件,.sincedb*不会保存有关该文件的任何信息。所以logstash会解析它!您可以尝试查找您的.sincedb并尝试删除它。

您尝试过服务器吗。*?很确定logstash使用的是unix全局绑定约定,而不是windows约定,但我可能错了,我只是尝试了一下。使用服务器。*。它接受server.log.1和server.log.2,但不接受server.log。但非常奇怪的是,当我让代理运行时,我用记事本打开server.log,然后用新编码utf-8(旧的是ANSI)执行“另存为”,然后替换旧文件,此时logstash会自动检测到该文件。我知道即时检测,因为我有一个kibana也在运行,它在卷轴时间向我显示logstash解析并发送给elasticsearch的内容。不是
server.*.
,只是
server.*.
或者可能是
server.*.*.
是的,我像你说的那样做了,即“server.*”第二个圆点是我句子的结尾。好的,谢谢,所以我想我必须使用start_position,但是对于doc,我看不到开头或结尾的影响,请告诉我这两个值将如何影响使用glob input解析目录。好的,这个设置只影响文件是新的,并且以前没有被logstash看到的文件。开始意味着logstash将在遇到新文件时从一开始解析日志,结束意味着logstash将不解析新文件的任何日志,并从文件末尾启动monitor