Logstash: пересылка логов через прокси на logz.io

Я хочу отправить стандартный вывод из запущенного приложения в logz.io с помощью logstash. Приложение и logstash - это образы докеров, управляемые docker-compose, который выполняет настройку (получение изображений, 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. У кого-нибудь есть предложения по этому вопросу?

1 ответ

Решение

Подключаемый модуль http logstash имеет атрибут 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}"
        }}}

Вам не нужен фильтр для отправки в logz.io, как в конфигурации tcp-output-plugin. Просто добавьте вход и отправьте его!

Другие вопросы по тегам