Узел глобального туннеля и логи и линкера

Я использую Linkerd и должен использовать global tunnel прокси все через localhost:4140, Проблема состоит в том, что это, кажется, заставляет loggly перестать работать. Как только глобальный туннель активен, loggly не получает никаких сообщений. Как я могу это изменить?

globalTunnel.initialize({
  host: 'localhost',
  port: 4140
});

Я видел, что я могу передать переменную прокси в конфигурации для loggy пример.

var logglyStream = new Bunyan2Loggly(logglyConfig);

Спасибо за помощь.

2 ответа

globalTunnel переопределяет все http-запросы, поэтому предполагается, что библиотека Loggly использует стандарт http библиотека, дальнейшая настройка прокси в библиотеке Loggly не требуется.

Я думаю, что здесь могут быть две проблемы:

Правила маршрутизации Linkerd

Linkerd нужны правила маршрутизации для прокси во внешний интернет. Вам понадобится DTAB, который распознает host:port запрашивает и направляет их соответственно:

dtab: |
  /ip-hostport => /$/inet;
  /svc => /$/io.buoyant.hostportPfx/ip-hostport;

Подтвердите, что маршрутизация работает с этой командой:

$ http_proxy=localhost:4140 curl -s -o /dev/null -w "%{http_code}" www.google.com:80
200

Обработка заголовка Loggly

Похоже, что Loggly не выполняет все запросы, содержащие заголовки с косой чертой в них:

# working request:
$ curl -H "foo: bar" -s -o /dev/null -w "%{http_code}" logs-01.loggly.com
403

# failed request:
$ curl -H "foo: /bar" -s -o /dev/null -w "%{http_code}" logs-01.loggly.com
400

Linkerd устанавливает несколько заголовков для исходящих запросов для трассировки, обнаружения служб и контекстной информации. Некоторые из этих заголовков содержат строки с косой чертой.

Чтобы обойти это, у нас есть два варианта:

  1. Измените linkerd, чтобы очистить заголовки исходящих запросов. Я подал github.com/linkerd/linkerd/issues/1218, чтобы отследить эту работу.
  2. Настройте прокси-сервер для обработки исходящих запросов для Loggly, как описано в https://github.com/loggly/loggly-jslogger. Затем, предполагая, что служба настроена на internal-nginx-proxyВы можете использовать это правило маршрутизации:
dtab: |
  /svc/logs-01.loggly.com => /$/inet/internal-nginx-proxy/80;

Я не знаком с linkerd, но он отправляет журналы на logs-01.loggly.com на порт 80 или 443 для безопасности. Это прокси через ваш туннель?

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