logstash简单文件输入/输出

logstash简单文件输入/输出,logstash,logstash-file,Logstash,Logstash File,我很难让logstash工作。作品。但后来,我和那个些人斗争。也许这也是elasticsearch的一个问题 现在我只想检查一个简单的示例是否有效: 输入:读取文本文件-a 输出:使用文本文件a的输入生成新的文本文件b 但我正在努力解决这个问题。我的配置如下: # foo.conf input { file { path => "C:/logstash-2.3.1/logstash-tutorial-dataset" start_position

我很难让logstash工作。作品。但后来,我和那个些人斗争。也许这也是elasticsearch的一个问题

现在我只想检查一个简单的示例是否有效:

  • 输入:读取文本文件-a
  • 输出:使用文本文件a的输入生成新的文本文件b
但我正在努力解决这个问题。我的配置如下:

# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
    }
}
output {
    stdout {}
    file {
        #message_format => "%{foo},%{bar},%{fii},%{bor},%{bing}" 
        #codec => { line { format => "custom format: %{message}"}}
        path => "C:/output.txt"
    }
}
# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
        ignore_older => 0  
    }
}
output {
    stdout {}
    file {
        path => "C:/output.txt"
    }
}
当我运行logstash时,我得到以下响应,但什么也没有发生

bin/logstash -f foo.conf -v --debug --verbose
io/console not supported; tty will not be manipulated
{:timestamp=>"2016-04-22T13:41:15.514000+0200", :message=>"starting agent", :level=>:info}
{:timestamp=>"2016-04-22T13:41:15.518000+0200", :message=>"starting pipeline", :id=>"main", :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.035000+0200", :message=>"Registering file input", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.039000+0200", :message=>"No sincedb_path set, generating one based on the file path", :sincedb_path=>"c:/Users/foobar/.sincedb_802dc9c88c8fad631bf3d3a5c96435e4", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.103000+0200", :message=>"Starting pipeline", :id=>"main", :pipeline_workers=>4, :batch_size=>125, :batch_delay=>5, :max_inflight=>500, :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.106000+0200", :message=>"Pipeline main started"}

如何让这个简单的示例工作?Logstash会记住它处理了哪些文件,以及处理了多少文件。在正常操作中,这允许它在出现故障时重新启动,而不是重新处理日志

在您的情况下,我假设您的日志文件已经处理过一次,所以logstash会忽略它。您提供的“start_position”参数记录为仅适用于新文件


您可能需要重置注册表(可能是像/var/lib/logstash/.sincedb*这样的文件),或者将文件{}中的“sincedb_path”参数设置为/dev/null,以便在测试时不维护历史记录。

忽略旧版本=>0
做到了这一点,请参阅文档:

工作配置如下所示:

# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
    }
}
output {
    stdout {}
    file {
        #message_format => "%{foo},%{bar},%{fii},%{bor},%{bing}" 
        #codec => { line { format => "custom format: %{message}"}}
        path => "C:/output.txt"
    }
}
# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
        ignore_older => 0  
    }
}
output {
    stdout {}
    file {
        path => "C:/output.txt"
    }
}

现在,
.sincedb*
文件也包含内容

sincedb是空的。我把它取了好几次,但结果没有变化。有些东西是有线的。是否还有另一个简单的hello world测试,我可以运行该测试?如果文件为空,则logstash不会处理您的文件。也许它现在太老了(请参阅“忽略旧的”)?