我正在尝试运行样本,例如。在 CDH 4.4 中使用 logstash-1.4.2 。每当我使用文件输入而不是stdin时,窗口会冻结以下消息:
使用里程碑2插件'文件'。这个插件应该是稳定的,但如果 你看到奇怪的行为,请告诉我们!更多 信息..... 我的代码如下所示:
input {
file {
path => "/tmp/access_log"
start_position => "beginning"
}
}
filter {
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
file{
path =>"/logs/output_log"
}
}
Command-bin / logstash -f logstash-apache.conf
我尝试删除$ HOME中以前的所有sincedb文件。目录并重新运行logstash,但这似乎也不起作用。我错过了什么吗?
答案 0 :(得分:7)
如果输入文件中只有一行, 你应该在最后添加一个空行! 应该有用!
编辑: 如果你在Windows机器上,你需要编写像
这样的绝对路径"c:/dev/access-log.txt"
并在c:
之后使用一个/而不是//答案 1 :(得分:2)
我遇到了困难,因为logstash跟踪了它已经读过的日志:https://stackoverflow.com/a/24034718/268907
请记住,此选项仅修改文件为新文件且之前未见过的“初次接触”情况。如果之前已经看过某个文件,则此选项无效。否则,您必须将sincedb_path设置为/ dev / null。
将sincedb_path设置为/ dev / null,您将阻止它跟踪上次读取的文件中的位置。
答案 2 :(得分:1)
您是否使用root权限运行?看起来/ logs / output_log需要写入root权限。
我使用logstash 1.4.1(和sudo)在本地尝试了你的配置,它似乎工作正常。
答案 3 :(得分:0)
你能试试下面的吗?它对我有用。
path => "/tmp/access_log/*"
而不是
path => "/tmp/access_log"