【问题标题】:logstash simple file input/outputlogstash 简单文件输入/输出
【发布时间】:2016-08-16 00:54:46
【问题描述】:

我无法让 logstash 正常工作。 Basic logstash Example 有效。但后来我与Advanced Pipeline Example 斗争。也许这也可能是弹性搜索的一个问题。

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

  • 输入:读取文本文件-a
  • 输出:使用 textfile-a 的输入生成新的 textfile-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"
    }
}

当我运行 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-file


    【解决方案1】:

    ignore_older => 0 成功了,请参阅文档:ignore_older

    工作配置如下:

    # 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* 文件也包含内容。

    【讨论】:

      【解决方案2】:

      Logstash 会记住它处理了哪些文件,以及它处理了多少文件。在正常操作中,这允许它在发生故障时重新启动,而不是重新处理日志。

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

      您要么需要重置注册表(可能是 /var/lib/logstash/.sincedb* 之类的文件),要么将文件中的“sincedb_path”参数设置为 /dev/null,这样它就不会测试时不要保留历史记录。

      【讨论】:

      • sincedb 为空。我多次删除它,但结果没有任何变化。有些东西是有线的。是否有另一个简单的 hello world 测试,我可以运行测试?
      • 如果文件为空,则 logstash 不会处理您的文件。也许它现在太旧了(参见“ignore_older”)?
      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多