How istio send tracing spans to jaeger?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







3















I want to use istio with existing jaeger tracing system in K8S, I began with installing jaeger system following the official link with cassandra as backend storage. Then installed istio by the helm way, but with only some selected components enabled:



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 and istio are installed inside the same namespace istio-sytem, after all done, all pods inside it looks like this:



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


Then I followed the link to deploy the bookinfo sample into another namespace istio-play, which has label istio-injection=enabled, but no matter how I flush the productpage page, there's no tracing data be filled into jaeger.



I guess maybe tracing spans are sent to jaeger by mixer, like the way istio do all other telementry stuff, so I -set mixer.enabled=true, but unfortunately only some services like istio-mixer or istio-telementry are displayed. Finally I cleaned up all the above installation and followed this task step by step, but the tracing data of bookinfo app are still not there.



My questions is: How indeed istio send tracing data to jaeger? Does sidecar proxy send it directly to jaeger-collector(zipkin.istio-system:9411) like how envoy does, or the data flows like this: sidecar-proxy -> mixer -> jaeger-collector? And how could I debug how the data flow between all kinds of components inside the istio mesh?



Thanks for any help and info :-)





Update: I tried again by installing istio without helm: kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml, this time everything works just fine, there must be something different between kubectl way and helm way.










share|improve this question

























  • I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

    – Nawaz
    Mar 16 at 11:05




















3















I want to use istio with existing jaeger tracing system in K8S, I began with installing jaeger system following the official link with cassandra as backend storage. Then installed istio by the helm way, but with only some selected components enabled:



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 and istio are installed inside the same namespace istio-sytem, after all done, all pods inside it looks like this:



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


Then I followed the link to deploy the bookinfo sample into another namespace istio-play, which has label istio-injection=enabled, but no matter how I flush the productpage page, there's no tracing data be filled into jaeger.



I guess maybe tracing spans are sent to jaeger by mixer, like the way istio do all other telementry stuff, so I -set mixer.enabled=true, but unfortunately only some services like istio-mixer or istio-telementry are displayed. Finally I cleaned up all the above installation and followed this task step by step, but the tracing data of bookinfo app are still not there.



My questions is: How indeed istio send tracing data to jaeger? Does sidecar proxy send it directly to jaeger-collector(zipkin.istio-system:9411) like how envoy does, or the data flows like this: sidecar-proxy -> mixer -> jaeger-collector? And how could I debug how the data flow between all kinds of components inside the istio mesh?



Thanks for any help and info :-)





Update: I tried again by installing istio without helm: kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml, this time everything works just fine, there must be something different between kubectl way and helm way.










share|improve this question

























  • I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

    – Nawaz
    Mar 16 at 11:05
















3












3








3


3






I want to use istio with existing jaeger tracing system in K8S, I began with installing jaeger system following the official link with cassandra as backend storage. Then installed istio by the helm way, but with only some selected components enabled:



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 and istio are installed inside the same namespace istio-sytem, after all done, all pods inside it looks like this:



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


Then I followed the link to deploy the bookinfo sample into another namespace istio-play, which has label istio-injection=enabled, but no matter how I flush the productpage page, there's no tracing data be filled into jaeger.



I guess maybe tracing spans are sent to jaeger by mixer, like the way istio do all other telementry stuff, so I -set mixer.enabled=true, but unfortunately only some services like istio-mixer or istio-telementry are displayed. Finally I cleaned up all the above installation and followed this task step by step, but the tracing data of bookinfo app are still not there.



My questions is: How indeed istio send tracing data to jaeger? Does sidecar proxy send it directly to jaeger-collector(zipkin.istio-system:9411) like how envoy does, or the data flows like this: sidecar-proxy -> mixer -> jaeger-collector? And how could I debug how the data flow between all kinds of components inside the istio mesh?



Thanks for any help and info :-)





Update: I tried again by installing istio without helm: kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml, this time everything works just fine, there must be something different between kubectl way and helm way.










share|improve this question
















I want to use istio with existing jaeger tracing system in K8S, I began with installing jaeger system following the official link with cassandra as backend storage. Then installed istio by the helm way, but with only some selected components enabled:



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 and istio are installed inside the same namespace istio-sytem, after all done, all pods inside it looks like this:



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


Then I followed the link to deploy the bookinfo sample into another namespace istio-play, which has label istio-injection=enabled, but no matter how I flush the productpage page, there's no tracing data be filled into jaeger.



I guess maybe tracing spans are sent to jaeger by mixer, like the way istio do all other telementry stuff, so I -set mixer.enabled=true, but unfortunately only some services like istio-mixer or istio-telementry are displayed. Finally I cleaned up all the above installation and followed this task step by step, but the tracing data of bookinfo app are still not there.



My questions is: How indeed istio send tracing data to jaeger? Does sidecar proxy send it directly to jaeger-collector(zipkin.istio-system:9411) like how envoy does, or the data flows like this: sidecar-proxy -> mixer -> jaeger-collector? And how could I debug how the data flow between all kinds of components inside the istio mesh?



Thanks for any help and info :-)





Update: I tried again by installing istio without helm: kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml, this time everything works just fine, there must be something different between kubectl way and helm way.







kubernetes istio zipkin envoyproxy jaeger






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 25 '18 at 14:19







shizhz

















asked Nov 24 '18 at 15:42









shizhzshizhz

5,93322138




5,93322138













  • I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

    – Nawaz
    Mar 16 at 11:05





















  • I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

    – Nawaz
    Mar 16 at 11:05



















I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

– Nawaz
Mar 16 at 11:05







I think --set tracing.enabled=false disables the tracing. You need --set tracing.enabled=true. That is why you're seeing the difference between kubectl way and helm way.

– Nawaz
Mar 16 at 11:05














1 Answer
1






active

oldest

votes


















3














Based on my experience and reading online, I found this interesting line in Istio mixer faq




Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.




Also, if you go deep into mixer helm chart, you will find traces of Zipkin and Jaeger signifying that it’s mixer that is passing trace info to Jaeger.



I also got confused which reading this line in one of the articles




Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).




On Istio mixer documentation, The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry. The sidecar has local caching such that a large percentage of precondition checks can be performed from cache. Additionally, the sidecar buffers outgoing telemetry such that it only calls Mixer infrequently.



Update: You can enable tracing to understand what happens to a request in Istio and also the role of mixer and envoy. Read more information here






share|improve this answer


























  • Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

    – shizhz
    Nov 25 '18 at 4:36











  • To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

    – Vidyasagar Machupalli
    Nov 25 '18 at 5:02














Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53459759%2fhow-istio-send-tracing-spans-to-jaeger%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














Based on my experience and reading online, I found this interesting line in Istio mixer faq




Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.




Also, if you go deep into mixer helm chart, you will find traces of Zipkin and Jaeger signifying that it’s mixer that is passing trace info to Jaeger.



I also got confused which reading this line in one of the articles




Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).




On Istio mixer documentation, The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry. The sidecar has local caching such that a large percentage of precondition checks can be performed from cache. Additionally, the sidecar buffers outgoing telemetry such that it only calls Mixer infrequently.



Update: You can enable tracing to understand what happens to a request in Istio and also the role of mixer and envoy. Read more information here






share|improve this answer


























  • Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

    – shizhz
    Nov 25 '18 at 4:36











  • To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

    – Vidyasagar Machupalli
    Nov 25 '18 at 5:02


















3














Based on my experience and reading online, I found this interesting line in Istio mixer faq




Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.




Also, if you go deep into mixer helm chart, you will find traces of Zipkin and Jaeger signifying that it’s mixer that is passing trace info to Jaeger.



I also got confused which reading this line in one of the articles




Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).




On Istio mixer documentation, The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry. The sidecar has local caching such that a large percentage of precondition checks can be performed from cache. Additionally, the sidecar buffers outgoing telemetry such that it only calls Mixer infrequently.



Update: You can enable tracing to understand what happens to a request in Istio and also the role of mixer and envoy. Read more information here






share|improve this answer


























  • Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

    – shizhz
    Nov 25 '18 at 4:36











  • To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

    – Vidyasagar Machupalli
    Nov 25 '18 at 5:02
















3












3








3







Based on my experience and reading online, I found this interesting line in Istio mixer faq




Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.




Also, if you go deep into mixer helm chart, you will find traces of Zipkin and Jaeger signifying that it’s mixer that is passing trace info to Jaeger.



I also got confused which reading this line in one of the articles




Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).




On Istio mixer documentation, The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry. The sidecar has local caching such that a large percentage of precondition checks can be performed from cache. Additionally, the sidecar buffers outgoing telemetry such that it only calls Mixer infrequently.



Update: You can enable tracing to understand what happens to a request in Istio and also the role of mixer and envoy. Read more information here






share|improve this answer















Based on my experience and reading online, I found this interesting line in Istio mixer faq




Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.




Also, if you go deep into mixer helm chart, you will find traces of Zipkin and Jaeger signifying that it’s mixer that is passing trace info to Jaeger.



I also got confused which reading this line in one of the articles




Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).




On Istio mixer documentation, The Envoy sidecar logically calls Mixer before each request to perform precondition checks, and after each request to report telemetry. The sidecar has local caching such that a large percentage of precondition checks can be performed from cache. Additionally, the sidecar buffers outgoing telemetry such that it only calls Mixer infrequently.



Update: You can enable tracing to understand what happens to a request in Istio and also the role of mixer and envoy. Read more information here







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 26 '18 at 2:04

























answered Nov 25 '18 at 3:17









Vidyasagar MachupalliVidyasagar Machupalli

1,1961818




1,1961818













  • Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

    – shizhz
    Nov 25 '18 at 4:36











  • To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

    – Vidyasagar Machupalli
    Nov 25 '18 at 5:02





















  • Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

    – shizhz
    Nov 25 '18 at 4:36











  • To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

    – Vidyasagar Machupalli
    Nov 25 '18 at 5:02



















Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

– shizhz
Nov 25 '18 at 4:36





Thanks for your response:-) So you mean the sidecar envoy proxy inside each pod has nothing to do with jaeger/zipkin tracing system, but when sidecar generates the static config for envoy(/etc/istio/proxy/envoy-rev0.json), from the config template file /var/lib/istio/envoy/envoy_bootstrap_tmpl.json you'll see it'll generate envoy's tracing block and a static zipkin cluster, if envoy won't send tracing info by itself, what's this config info for?

– shizhz
Nov 25 '18 at 4:36













To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

– Vidyasagar Machupalli
Nov 25 '18 at 5:02







To understand the role of mixer and envoy,You should check this answer here - stackoverflow.com/questions/48639660/…

– Vidyasagar Machupalli
Nov 25 '18 at 5:02






















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53459759%2fhow-istio-send-tracing-spans-to-jaeger%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

Academy of Television Arts & Sciences

L'Équipe

1995 France bombings