我在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"
}
}
我不知道我错在哪里。有人能帮我看看这个吗?
3条答案
按热度按时间yuvru6vn1#
您应该在文件节下设置start_position:
它默认为end,因此不会读取文件中的任何现有行,只读取新添加的行:
起始位置
选择Logstash开始阅读文件的位置:在开头或结尾。默认行为将文件视为实时流,因此从最后开始。如果您有旧的数据要导入,请将此设置为'开始'
此选项仅修改“第一次接触”的情况下,一个文件是新的,以前没有见过。如果以前已经看到过某个文件,则此选项无效。
ruyhziif2#
除了提供的答案之外,我还必须将路径从c:\my\path更改为c:/my/path,以便它读取文件。
b4lqfgs43#
那些试图在docker上调试他们的ELK设置的人,将你的日志文件添加到logstash的卷中,在logstash.conf中指定它。
如果你指定了stdout config,你应该会在logstash的docker日志上看到你的日志。