当我使用stdin作为输入流时,我得到了正确的输出。但每当我使用该文件作为输入时,输出会在以下消息后冻结。
"Using milestone 2 input plugin 'file'. This plugin should be stable but if you see strange behavior, please let us know."
这是我的配置文件。
input {
file {
path => ["c:/users/a/b/c/logstash-1.4.1/bin/logs/logfile.log"]
start_position => beginning
}
}
filter {
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{MY_DATE:my_date}"]
}
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{DATE:date}"]
}
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{TIME:time}"]
}
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{LOG_LEVEL:log_level}"]
}
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{SERVER:server}"]
}
grok {
patterns_dir => "./patterns"
break_on_match => "false"
match => ["message", "%{CLASS_NAME:class_name}"]
}
}
output {
stdout { codec => rubydebug }
elasticsearch { host => localhost }
}
我的文件路径格式是否错误?
答案 0 :(得分:5)
您是否将新日志写入日志文件?
start_position选项仅修改a file is new and not seen before
的“第一次联系”情况。这是因为Logstash将为每个文件保存sincedb以跟踪受监视日志文件的当前位置。因此,下次重新启动Logstash时,Logstash将根据sincedb记录开始监视文件,start_position将不起作用。
因此,如果要导入旧日志,则必须先删除所有.sincedb文件,然后再启动logstash并添加start_position选项。
答案 1 :(得分:4)
这里有两个问题:
START_POSITION
Value can be any of: "beginning", "end" Default value is "end"
选择Logstash最初开始读取文件的位置:开头 或者最后。默认行为处理文件,如实时流和 因此从最后开始。如果您要导入旧数据,请进行设置 这到'开始'
组合可能会导致您始终在文件末尾开始。
我现在无法在Windows下测试(无法在工作中访问),但想要把它告诉你。
答案 2 :(得分:0)
我在mac上使用logstash-1.5.4。我遇到了类似的问题,并通过在conf文件中显式设置sincedb_path来解决它。
sincedb_path => "your sincedb path"
我不确定这个解决方案是否会解决您的问题,因为我们使用的是不同版本的logstash和不同的操作系统。
您可以使用调试模式运行命令以查看发生的情况。
./bin/logstash -f my_logstash.conf --debug