Как istio отправлять трассы трассировки в Jaeger? - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу использовать istio с существующей системой отслеживания jaeger в K8S, я начал с установки системы jaeger, следуя официальной ссылке с cassandra в качестве внутреннего хранилища.Затем установили istio с помощью путем рулевого управления , но с включенными только некоторыми выбранными компонентами:

helm upgrade istio -i install/kubernetes/helm/istio --namespace istio-system \   
--set security.enabled=true \   
--set ingress.enabled=false \   
--set gateways.istio-ingressgateway.enabled=true \   
--set gateways.istio-egressgateway.enabled=false \   
--set galley.enabled=false \   
--set sidecarInjectorWebhook.enabled=true \  
--set mixer.enabled=false \   
--set prometheus.enabled=false \
--set global.proxy.envoyStatsd.enabled=false \
--set pilot.sidecar=true \ 
--set tracing.enabled=false

Jaeger и istio установлены в одном пространстве имен istio-sytem, после того как все сделано, все модуливнутри это выглядит так:

kubectl -n istio-system get pods                           
NAME            READY     STATUS    RESTARTS   AGE 
istio-citadel-5c9544c886-gr4db      1/1       Running   0          46m 
istio-ingressgateway-8488676c6b-zq2dz     1/1       Running   0        51m 
istio-pilot-987746df9-gwzxw               2/2       Running   1    51m 
istio-sidecar-injector-6bd4d9487c-q9zvk   1/1       Running   0    45m 
jaeger-collector-5cb88d449f-rrd7b         1/1       Running   0    59m 
jaeger-query-5b5948f586-gxtk7             1/1       Running   0    59m

Затем я перешел по ссылке , чтобы развернуть образец bookinfo в другом пространстве имен istio-play, которое имеет метку istio-injection=enabled, но неважно, как яочистите страницу productpage, данные трассировки не будут заполнены в jaeger.

Я полагаю, что, возможно, трассы трассировки отправляются в jaeger микшером, подобно тому, как istio делают все остальное, что происходит в телеметрии, поэтому я -set mixer.enabled=true,но, к сожалению, отображаются только некоторые службы, такие как istio-mixer или istio-telementry.В конце концов я очистил все вышеперечисленные установки и пошагово выполнил эту задачу , но данные трассировки приложения bookinfo все еще отсутствуют.

Мои вопросы: Как на самом деле istio отправляет данные трассировкиегерь?Посылает ли прокси-сервер sidecar его напрямую в jaeger-collector (zipkin.istio-system:9411), например , как это делает посланник , или данные передаются следующим образом: sidecar-proxy -> mixer -> jaeger-collector?И как я могу отладить, как поток данных между всеми видами компонентов внутри сетки istio?

Спасибо за любую помощь и информацию: -)


Обновление : Я попытался снова, установив istio без шлема: kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml, на этот раз все работает простохорошо, должно быть что-то другое между kubectl way и helm way.

1 Ответ

0 голосов
/ 25 ноября 2018

Основываясь на своем опыте и чтении в Интернете, я нашел эту интересную строку в Istio mixer faq

Генерация трассировки микшера контролируется флагами командной строки: trace_zipkin_url, trace_jaeger_url,и trace_log_spans.Если установлено любое из этих значений флага, данные трассировки будут записываться непосредственно в эти места.Если опции трассировки не предоставлены, Mixer не будет генерировать какую-либо информацию трассировки уровня приложения.

Также, если вы углубитесь в микшер рулевой график , вы найдете следы Zipkinи Jaeger означает, что это микшер, который передает информацию о трассировке Jaeger.

Я также запутался, читая эту строку в одной из статей

Istio внедряет прокси-сервер коляской (Посланник)в модуле, в котором работает контейнер вашего приложения.Этот дополнительный прокси-сервер прозрачно перехватывает (магия iptables) весь сетевой трафик, входящий и выходящий из вашего приложения.Из-за этого перехвата прокси коляски находится в уникальном положении для автоматического отслеживания всех сетевых запросов (HTTP / 1.1, HTTP / 2.0 и gRPC).

В документации микшера Istio, коляска Envoy логически вызываетМиксер перед каждым запросом выполнять предварительные проверки, а после каждого запроса сообщать о телеметрии.Коляска имеет локальное кэширование, так что большой процент предварительных проверок может быть выполнен из кэша.Кроме того, коляска буферизует исходящую телеметрию, так что она редко вызывает только Mixer.

Обновление: Вы можете включить трассировку, чтобы понять, что происходит с запросом в Istio, а также роль микшера и посланника.,Подробнее здесь

...