我在GCS中有文件,每个文件都包含json行 文件示例:
{"msg": "hello world", "level": "info", "timestamp": "2017-09-01T00:00"}
{"msg": "some error", "level": "error", "timestamp": "2017-09-02T00:00"}
{"msg": "success" , "level": "info", "timestamp": "2017-09-03T00:00"}
...
我正在运行GCS中的所有文件,下载每个文件,我试图将它们发送到logstash - 所以我得到每一行的登录弹性
这是我的logstash conf:
input {
tcp {
port => 5000
}
}
output {
elasticsearch {
hosts => "https://xxxxxxxxxxx.us-central1.gcp.cloud.es.io:9243"
user => "elastic"
password => "xxxxxxx"
index => "app-log-%{+YYYY.MM.dd}"
}
}
现在如何将文件内容发送到logstash? 我应该使用不同于tcp的输入吗?也许filebeat? 在nodejs(或其他语言)中是否有任何演示代码来发送文件?
答案 0 :(得分:1)
而不是下载然后将日志发送到logstash
使用filebeat,它甚至可以通过将文件发送到logstash
来处理文件中的未来更改,而且最重要的是设置并与logstash
和elaticsearch
很好地集成。
答案 1 :(得分:0)
我结束使用http
插件
input {
http { codec => line}
}
filter {
}
output {
elasticsearch {
hosts => "https://xxxxx.us-central1.gcp.cloud.es.io:9243"
user => "elastic"
password => "xxxxxxx"
index => "app"
}
}
然后发送http:
curl -X POST \
http://127.0.0.1:8080/ \
-H 'content-type: content-type: application/json' \
-d '{"msg": "hello world", "level": "info", "timestamp": "2017-09-01T00:00"}
{"msg": "some error", "level": "error", "timestamp": "2017-09-02T00:00"}
{"msg": "success" , "level": "info", "timestamp": "2017-09-03T00:00"}
'