将文件日志发送到logstash

时间:2018-01-13 18:01:32

标签: logstash

我在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(或其他语言)中是否有任何演示代码来发送文件?

2 个答案:

答案 0 :(得分:1)

而不是下载然后将日志发送到logstash使用filebeat,它甚至可以通过将文件发送到logstash来处理文件中的未来更改,而且最重要的是设置并与logstashelaticsearch很好地集成。

答案 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"}
'