直截了当。
cat
将行记录到目标路径,以便Logstash唤醒并拾取这些新行,即使我指定了新的
read
模式。
最后,这个设置不需要
sincedb
总是
细节和发现。
我使用的Logstash设置只是对Apache日志进行一些过滤以获取输入。我使用的输入配置如下:;请注意,为了隐私起见,文件路径稍微做了一些调整,但实际上正是我现在使用的,并且在过去一年左右一直在使用,没有任何问题:
input {
file {
path => "/opt/logstash/coolapp/access_log*"
exclude => "*.gz"
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
close_older => 3600
stat_interval => 1
discover_interval => 15
}
}
/opt/logstash/coolapp/
然后当我通过命令行启动Logstash时
-f
coolapp-apache.conf
logstash -f coolapp-apache.conf
Logstash在本地启动,发出所有一堆启动状态消息,直到最后一条消息:
[2018-09-24T12:40:09,458][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
对我来说,这表明它完全启动和运行,并检查我的数据采集输出显示,如果它是一个数据流涌入工作,但当使用Logstash 6.4.1我看不到任何数据流入。
tail
模式。
查看文件输入插件(v4.1.5)的最新更新文档
there is a new
mode
option
有一个
阅读
尾
模式。知道默认模式是
在启动本地Logstash调试设置之后,我通过执行以下操作来测试设置。首先我复制了
access_log
具体如下:
cp /opt/logstash/coolapp/access_log /opt/logstash/coolapp/access_log_BAK
然后我把主要的
访问日志
:>
:> /opt/logstash/coolapp/access_log
最后我跑了
猫
并将复制的文件数据附加到原始文件中,如下所示:
cat /opt/logstash/coolapp/access_log_BAK > /opt/logstash/coolapp/access_log
当我第二次这么做的时候,你瞧,数据开始像预期的那样流动了!我想新的文件输入插件主要是
tailing a file more than
阅读?不管怎样,这是有效的,但显然是恼人的。我不是这样发展的。我需要Logstash来读取文件并解析它们。
文件输入插件无法使用
阅读
模式。
所以我试着使用下面的设置来读取文件
based on what I saw in the official Logstash file input
mode
documentation
input {
file {
path => "/opt/logstash/coolapp/access_log"
mode => "read"
file_completed_action => "log"
file_completed_log_path => "/Users/jakegould/Desktop/access_log_foo"
}
}
当然是这样
access_log_foo
只是为了验证测试的概念文件名,但当所有的说和做这一切
阅读
模式在macOS上完全不起作用。我甚至试过换衣服
path
我想是埃德吧?
所以知道这些:
总是
从文件的开头读取数据,不管它曾经在Logstash版本6.3.2和以前版本中毫不费力地做过什么?