如何强制Logstash重新分析文件?

Chr*_*ude 88 file logstash

我安装了Logstash来解析apache文件.我花了很多时间来设置正确的,我总是尝试真正的日志.我注意到(正如文档所说)logstash"记住"它在文件中的位置.现在我的设置很好,我希望Logstash"忘记".这似乎比我更难.我已经做了以下事情:

  • 用过的: start_position => "beginning"

  • 从elastissearch中删除了完整的"数据"文件夹(并先将其停止)

  • 看看logstash打开哪些文件lsof -p PID并删除了所有有希望的东西(在我的例子中/tmp/jffi*.tmp)

Logstash仍然不会忘记并解析日志所在文件夹中的"新鲜"文件

有任何想法吗?

fla*_*ini 132

默认情况下,logstash将最后的位置写入通常驻留的日志文件中$HOME/.sincedb.可以愚弄Logstash,使其相信它从未通过指定/dev/nullas 来解析日志文件sincedb_path.

这里是文档输入文件的一部分.

在哪里写入自己的数据库(跟踪受监视日志文件的当前位置).默认为环境变量"$ SINCEDB_PATH"或"$ HOME/.sincedb"的值.

配置示例

input {
    file {
        path => "/tmp/logfile_to_analyse"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在Windows上你可以使用`sincedb_path =>"NUL"`来获得相同的效果.Detailes [here](http://stackoverflow.com/questions/313111/dev-null-in-windows) (27认同)
  • 如果文件很旧(超过24小时),非常有用的是添加选项`ingnore_older => 0`,因此无论日期如何,logstash都将使用它们.默认情况下,如果文件较旧,则将忽略24h. (11认同)

小智 19

插件文件在sincedb文件中存储"拖尾"的历史记录,默认值为:$ HOME/.sincedb*,参见http://logstash.net/docs/1.3.3/inputs/file#sincedb_path

自db文件以来包含的行如下所示:

[inode] [major device number] [minor device number] [byte offset]
Run Code Online (Sandbox Code Playgroud)

因此,如果要再次解析完整文件,则需要:

  • 删除sindedb文件
  • 或者只删除sincedb文件中的相应行,检查文件前的inode编号(ls -i yourFile | awk '{print $1}')
  • 并重新启动Logstash

使用键start_position =>"开始,Logstash将分析所有文件.

sincedb文件的示例:

  • 关于`start_position =>“beginning”`,文档说:>此选项仅修改文件是新的且之前未见过的“第一次接触”情况。如果以前已经见过某个文件,则此选项无效。 (2认同)

Ben*_*Lim 10

Logstash将记录保存在$ HOME/.sincedb_*中.您可以删除所有.sincedb并重新启动logstash,Logstash将重新解析该文件.


vik*_*027 9

结合所有答案,猜猜这是解析文件的最佳方法.我的测试也做了同样的事情.

input {
  file {
    path => "/tmp/access_log"
    start_position => beginning
    sincedb_path => "/dev/null"
    ignore_older => 0
  }
}
Run Code Online (Sandbox Code Playgroud)

对于快速测试,ignore_older您也touch /tmp/access_log可以更改文件的时间戳.


小智 5

如果您使用的是logstash-forwarder,请检查您的家庭.logstash-forwarder文件:

{
  "/var/log/messages": {
    "source": "/var/log/messages",
    "offset": 43715,
    "inode": 12967,
    "device": 51776
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果作为包安装,请检查`/ var/lib/logstash-forwarder /`. (3认同)