Logstash未阅读文件输入

bzzcjhmw  于 2023-09-28  发布在  Logstash
关注(0)|答案(3)|浏览(146)

我在Logstash遇到了一个奇怪的问题。我提供了一个日志文件作为logstash的输入。配置如下:

input {
  file {
    type => "apache-access"
    path => ["C:\Users\spanguluri\Downloads\logstash\bin\test.log"]
  }
}
output {
  elasticsearch {
    protocol => "http"
    host => "10.35.143.93"
    port => "9200"
    index => "latestindex"
  }
}

我已经在运行elasticsearch服务器,并验证是否通过curl查询接收数据。问题是,当输入是file时,没有接收到数据。但是,如果我将输入更改为stdin { },它会顺利发送所有输入数据:

input {
  stdin{ }
}
output {
  elasticsearch {
    protocol => "http"
    host => "10.35.143.93"
    port => "9200"
    index => "latestindex"
  }
}

我不知道我错在哪里。有人能帮我看看这个吗?

yuvru6vn

yuvru6vn1#

您应该在文件节下设置start_position:

start_position => "beginning"

它默认为end,因此不会读取文件中的任何现有行,只读取新添加的行:
起始位置

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

选择Logstash开始阅读文件的位置:在开头或结尾。默认行为将文件视为实时流,因此从最后开始。如果您有旧的数据要导入,请将此设置为'开始'
此选项仅修改“第一次接触”的情况下,一个文件是新的,以前没有见过。如果以前已经看到过某个文件,则此选项无效。

ruyhziif

ruyhziif2#

除了提供的答案之外,我还必须将路径从c:\my\path更改为c:/my/path,以便它读取文件。

b4lqfgs4

b4lqfgs43#

那些试图在docker上调试他们的ELK设置的人,将你的日志文件添加到logstash的卷中,在logstash.conf中指定它。

input {
    file {
    path => "/usr/share/logstash/app.log"  # Update this path to the actual path of your app.log file
    start_position => "beginning"
    sincedb_path => "/dev/null"    # Disable sincedb tracking

  }

}

filter {

}

output {
    elasticsearch {
        hosts => "${SOME_ENV_VARIABLE_IN_ADDITION_TO_OTHERS_IF_YOU_USE_ELASTIC}"
                }
    stdout { 
        codec => rubydebug 
        }

}

如果你指定了stdout config,你应该会在logstash的docker日志上看到你的日志。

相关问题