Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Opentracing support for k8s / OpenShift infrastructures in Che #10288

Closed
6 of 13 tasks
ibuziuk opened this issue Jul 5, 2018 · 5 comments
Closed
6 of 13 tasks

Opentracing support for k8s / OpenShift infrastructures in Che #10288

ibuziuk opened this issue Jul 5, 2018 · 5 comments
Labels
kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.

Comments

@ibuziuk
Copy link
Member

ibuziuk commented Jul 5, 2018

Introduction

Opentracing is vendor-neutral APIs and instrumentation for distributed tracing which allows to switch tracer implementation with O(n) complexity (e.g. switching between jaeger & zipkin is just a mater of updating the tracer config & no need to update opentracing related code).

Motivation

When opentracing support would be added to Che this would allow to collect metrics like request duration / error rate easily. This would be particularly useful for multi-user use case and would be also handy for single-user in order to identify potential bottle-necks in the system.

Demo

A short demo with collecting metrics between che-starter and che-server using zipkin as a tracer - https://youtu.be/4tWeH8JqQQk

Tasks

Is Tracing is the same as logging ?
No. Tracing is mostly focused on metrics like request duration / error rate in the microservice environment with possibility to identify bottle-necks across the system.
image

Should tracing (instrumentation) be always separate from logging ?
Every case is a case, but in general it is common to separate tracing from logging.Correlation between logs and traces happens by passing trace_id to every log entry. On the other hand, frameworks like Spring Cloud provide a possibility to record log entries within the relevant tracing spans. To put it in a nutshell, it depends on the application. If performance is critical adding all logs to tracing spans would appear to be costly operations, but if it is just a small service where performance is not an issue, it makes sense to store logging with spans. For Che case opentracing makes the most sense for multi-user user-case so it would be better to fallback on the approach with separating logs & traces and add logs to the tracing spans only if this data would be useful for investigation of metrics like request duration / error rate.

@ibuziuk ibuziuk added the kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. label Jul 5, 2018
@yarivlifchuk yarivlifchuk mentioned this issue Jul 5, 2018
20 tasks
@yarivlifchuk
Copy link

I agree to the separation between logs and traces.
They have separate purposes. Logging is critical part for analysis and should have essential information to detect problems while tracing should mainly detect latency and bottleneck and should have minimal data to avoid severe performance issues.
So If both are required in Che it should be better to separate between logging and tracing even for small services.

@ibuziuk
Copy link
Member Author

ibuziuk commented Jul 5, 2018

agree, so for correlation between logs & traces it would be required to put the trace_id to every log entry

@yarivlifchuk
Copy link

trace_id was added to the logging epic #10290 as an optional custom param that can be added to the log's record.

@jpkrohling
Copy link

If there's anything you need regarding Jaeger, let me know.

@skabashnyuk
Copy link
Contributor

will close in favor of #10298

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed.
Projects
None yet
Development

No branches or pull requests

4 participants