2014-06-10 82 views
3

当我使用stdin作为输入流时,我得到正确的输出。但是,无论何时将该文件用作输入,输出都会在以下消息之后冻结。文件输入不能用于logstash

"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选项。

+0

我从主目录中删除了所有以前的sincedb文件,甚至将我的配置文件简化为只使用grok过滤器中的构建。但是在展示里程碑信息之后,它仍然处于冻结状态。 – anshk9

+0

我切换到Linux和Im仍然有相同的问题。 – anshk9

4

两个问题在这里:

  1. 的sincedb PROCESSS跟踪读取位置在文件中 打破目前在Windows中: https://logstash.jira.com/browse/LOGSTASH-429。有一个补丁但 其他人已经证实,这仍然是截至版本1.4.1
  2. 我相信你需要引号开头 - 根据 文件其“开始”或“结束”,默认为“结束”为 start_position。所以我怀疑这只是无视你的指示。

START_POSITION

Value can be any of: "beginning", "end" 
Default value is "end" 

选择在何处Logstash最初开始读取文件:在开始 或结束。默认行为像直播流一样对待文件,因此从最后开始。如果你有旧的数据要导入,设置 这“开始”

的组合很可能导致你总是在文件的末尾开始。

我现在无法在windows下测试(在工作时无法访问),但想把它交给你。

0

我在mac上使用logstash-1.5.4。我遇到了类似的问题,并通过在conf文件中明确设置sincedb_path来解决它。

sincedb_path => "your sincedb path"

我不知道,因为我们使用的是不同版本logstash和不同的操作系统的这种解决方案能够解决您的问题。

您可以使用调试模式运行命令以查看发生了什么。

./bin/logstash -f my_logstash.conf --debug