Узел глобального туннеля и логи и линкера
Я использую 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 устанавливает несколько заголовков для исходящих запросов для трассировки, обнаружения служб и контекстной информации. Некоторые из этих заголовков содержат строки с косой чертой.
Чтобы обойти это, у нас есть два варианта:
- Измените linkerd, чтобы очистить заголовки исходящих запросов. Я подал github.com/linkerd/linkerd/issues/1218, чтобы отследить эту работу.
- Настройте прокси-сервер для обработки исходящих запросов для 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 для безопасности. Это прокси через ваш туннель?