3

当我使用标准输入作为输入流时,我得到了正确的输出。但是,每当我将文件用作输入时,输出都会在以下消息之后冻结。

"Using milestone 2 input plugin 'file'. This plugin should be stable but if you see strange behavior, please let us know."

这是我的配置文件。

input {
  file {
    path => ["c:/users/a/b/c/logstash-1.4.1/bin/logs/logfile.log"]
    start_position => beginning
  }
}

filter {
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{MY_DATE:my_date}"]
        }
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{DATE:date}"]
        }
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{TIME:time}"]
        }
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{LOG_LEVEL:log_level}"]
        }
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{SERVER:server}"]
        }
    grok {
                patterns_dir => "./patterns"
                break_on_match => "false"
                match => ["message", "%{CLASS_NAME:class_name}"]
        }

}

output {
  stdout { codec => rubydebug }
  elasticsearch { host => localhost }
 }

我的文件路径格式错误吗?

4

3 回答 3

5

您是否将新日志写入日志文件?

start_position 选项仅修改a file is new and not seen before. 这是因为 Logstash 会为每个文件保存一个sincedb来跟踪被监控日志文件的当前位置。所以,下次重启 Logstash 时,Logstash 会根据 sincedb 记录开始监控文件,start_position 将不起作用。

因此,如果要导入旧日志,则必须在启动 logstash 之前删除所有 .sincedb 文件并添加 start_position 选项。

于 2014-06-11T01:47:51.903 回答
4

这里有两个问题:

  1. 用于跟踪文件中读取位置的 sincedb 进程当前在 Windows 中被破坏: https ://logstash.jira.com/browse/LOGSTASH-429 。有一个补丁,但其他人已经确认这在 1.4.1 版本中仍然被破坏
  2. 我相信您需要在开始时加上引号 - 根据文档,它的“开始”或“结束”,默认为 start_position 的“结束”。所以我怀疑它只是无视你的指令。

开始位置

Value can be any of: "beginning", "end"
Default value is "end"

选择 Logstash 开始读取文件的初始位置:开始或结束。默认行为将文件视为实时流,因此从最后开始。如果您有要导入的旧数据,请将其设置为“开始”</p>

这种组合可能会导致您始终从文件末尾开始。

我现在无法在 Windows 下进行测试(工作时无法访问),但我想把它告诉你。

于 2014-06-11T23:43:50.443 回答
0

我在 mac 上使用 logstash-1.5.4。我遇到了类似的问题,并通过在 conf 文件中显式设置 sincedb_path 解决了它。

sincedb_path => "your sincedb path"

我不确定这个解决方案是否能解决您的问题,因为我们使用不同版本的 logstash 和不同的操作系统。

您可以在调试模式下运行命令以查看发生了什么。

./bin/logstash -f my_logstash.conf --debug
于 2015-10-27T16:19:31.450 回答