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. Просто добавьте вход и отправьте его!