Logstash 从 stdin 读取数据而不是从文件读取数据
Logstash reads data from stdin but not from file
我有一个 JSON 日志文件,其中只有一行:
{"@timestamp":"2016-06-02T13:56:49.235+00:00","thread_name":"qtp485047320-228","level":"ERROR","host":"domain.com","class":"MyClass","url":"/my-url","ip":"12.122.122.122","message":"Exception caught by exception handler.","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36","stacktrace":"com.test.exceptions.NotFoundException: NotFoundException for parameter [12345678-1234]. Message: url was not found by service.]"}
这是我的 logstash.conf 文件:
input {
# stdin {}
file {
path => "/Users/me/Applications/logstash-2.3.1/examples/json_input.1.log"
start_position => "beginning"
}
}
filter {
json{
source => "message"
}
geoip {
source => "ip"
target => "geoip"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-app-errors"
}
}
如您所见,在输入部分我使用了标准输入(现在在评论中),后来我改为从文件中读取数据。
问题是,当我使用标准输入并粘贴 json 数据(1 行)时,一切正常,我在 elasticSearch 中看到数据,但是当我将其更改为文件时,没有任何反应...
我还在 logstash 执行命令 ./logstash agent -f logstash.conf --debug
中添加了 --debug
参数,但在调试输出中看不到任何可疑的东西。
我错过了什么?
发现问题 - 如果输入文件只有一行数据,您应该添加一个空的新行。
那解决了我的问题。不敢相信我花了那么多时间在那上面...
编辑:
给elastic开了个issue,可以关注issue状态here
我有一个 JSON 日志文件,其中只有一行:
{"@timestamp":"2016-06-02T13:56:49.235+00:00","thread_name":"qtp485047320-228","level":"ERROR","host":"domain.com","class":"MyClass","url":"/my-url","ip":"12.122.122.122","message":"Exception caught by exception handler.","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36","stacktrace":"com.test.exceptions.NotFoundException: NotFoundException for parameter [12345678-1234]. Message: url was not found by service.]"}
这是我的 logstash.conf 文件:
input {
# stdin {}
file {
path => "/Users/me/Applications/logstash-2.3.1/examples/json_input.1.log"
start_position => "beginning"
}
}
filter {
json{
source => "message"
}
geoip {
source => "ip"
target => "geoip"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-app-errors"
}
}
如您所见,在输入部分我使用了标准输入(现在在评论中),后来我改为从文件中读取数据。
问题是,当我使用标准输入并粘贴 json 数据(1 行)时,一切正常,我在 elasticSearch 中看到数据,但是当我将其更改为文件时,没有任何反应...
我还在 logstash 执行命令 ./logstash agent -f logstash.conf --debug
中添加了 --debug
参数,但在调试输出中看不到任何可疑的东西。
我错过了什么?
发现问题 - 如果输入文件只有一行数据,您应该添加一个空的新行。 那解决了我的问题。不敢相信我花了那么多时间在那上面...
编辑:
给elastic开了个issue,可以关注issue状态here