Logstash:通过代理将日志转发到logz.io

时间:2017-11-22 15:47:40

标签: tcp proxy logstash logz.io

我想使用logstash将stdout从正在运行的应用程序发送到logz.io。应用程序和logstash都是由docker-compose管理的docker镜像,它执行设置(pull images,network_mode,logging drivers等)。 Logstash输入通过gelf-input-plugin处理。运送到logz.io是通过tcp-output-plugin处理的。

logstash.conf:

input { gelf {
            type => docker
            port => 12201 } }

filter { mutate { add_field => { "token" => "${LOGZIOTOKEN}" } } }

output { tcp {
            host => "listener.logz.io"
            port => 5050
            codec => json_lines } }

摘自docker-compose.yml:

  application:
  ...
 logging:
   driver: "gelf"
  options:
    gelf-address: "udp://0.0.0.0:12201"

这可以按预期工作。

现在我需要使用一个TCP代理服务器,将日志从主机(运行logstash实例)发送到logz.io.不幸的是我没有找到logstashs tcp-output-plugin的代理扩展。有没有人对此问题有任何建议?

1 个答案:

答案 0 :(得分:0)

logstash的http输出插件具有属性proxy。你必须使用logz.io端口运送curl:8070(http)/ 8071(https)。

工作配置如下所示:

output { http {
        url => "https://listener.logz.io:8071?token=${LOGZIOTOKEN}"
        http_method => "post"
        format => "json"
        content_type => "application/json"
        proxy => {
            host => "${PROXYHOST}"
            port => "${PROXYPORT}"
            scheme => 'http'
            user => "${PROXYUSER}"
            password => "${PROXYPW}"
        }}}

您不需要像tcp-output-plugin配置中那样将过滤器发送到logz.io。只需添加输入并发货!