0

我想使用logstash将标准输出从正在运行的应用程序发送到logz.io。应用程序和 logstash 都是由 docker-compose 管理的 docker 镜像,它负责设置(拉取镜像、network_mode、日志驱动程序等)。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 的代理扩展。有人对这个问题有建议吗?

4

1 回答 1

0

logstash 的 http 输出插件具有属性代理。您必须使用 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。只需添加输入并发送它!

于 2017-11-24T11:36:31.847 回答