logstash 简单文件 input/output
logstash simple file input/output
我无法让 logstash 正常工作。 Basic logstash Example works. But then I struggle with the Advanced Pipeline Example。也许这也可能是弹性搜索的问题。
现在我只想检查一个简单的示例是否有效:
- 输入:读取文本文件-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"
}
}
当我 运行 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,这样它不会在您测试时保留历史记录。
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*
文件也包含内容。
我无法让 logstash 正常工作。 Basic logstash Example works. But then I struggle with the Advanced Pipeline Example。也许这也可能是弹性搜索的问题。
现在我只想检查一个简单的示例是否有效:
- 输入:读取文本文件-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"
}
}
当我 运行 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,这样它不会在您测试时保留历史记录。
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*
文件也包含内容。