-
Notifications
You must be signed in to change notification settings - Fork 351
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
Use OpenTelemetry instead of OpenTracing #2104
Comments
@AlexanderYastrebov we don't need to break library users if we can abstract the interface and plug either opentracing or opentelemetry into it. https://pkg.go.dev/go.opentelemetry.io |
Hey there! Has there been any developments on this front ? I would love to be able to enable opentelemetry tracing for Skipper, since it would plug nicely into the rest of my observability stack. |
@fpiche yes we should do it also in our case, but we did not have the time yet. Or we do a major breaking change which we as a library don't want. |
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. Note that this change removes non-standard "shedder" kind from spans created by `admissionControl` filter. Use operation name "admission_control" to query its spans instead if needed. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
Deprecates opentracing getters and removes their usage from filters. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
Deprecate OpenTracing FilterContext getters and remove their usage from filters. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
Deprecate OpenTracing FilterContext getters and remove their usage from filters. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
Deprecate OpenTracing FilterContext getters and remove their usage from filters. For #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTelemetry-OpenTracing bridge span kind can not be changed after creation, see open-telemetry/opentelemetry-go#3953 The workaround is to specify span kind on creation which works for both Open Tracing and Open Telemetry bridge spans. Note that this change removes non-standard "shedder" kind from spans created by `admissionControl` filter. Use operation name "admission_control" to query its spans instead if needed. For zalando#2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de> Signed-off-by: Janardhan Sharma <janardhan.sharma@zalando.de>
YAML flag parses (preferably flow-style) YAML value from command line or unmarshals object yaml value from config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
YAML flag parses (preferably flow-style) YAML value from the command line or unmarshals object yaml value from the yaml config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for #2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
YAML flag parses (preferably flow-style) YAML value from the command line or unmarshals object yaml value from the yaml config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for #2104 It is also a better alternative to manual parsing of micro-syntax like e.g. implemented in #2888 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
YAML flag parses (preferably flow-style) YAML value from the command line or unmarshals object yaml value from the yaml config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for #2104 It is also a better alternative to manual parsing of micro-syntax like e.g. implemented in #2888 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
YAML flag parses (preferably flow-style) YAML value from the command line or unmarshals object yaml value from the yaml config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for #2104 It is also a better alternative to manual parsing of micro-syntax like e.g. implemented in #2888 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
Deprecate OpenTracing FilterContext getters and remove their usage from filters. For zalando#2104 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
YAML flag parses (preferably flow-style) YAML value from the command line or unmarshals object yaml value from the yaml config file. Example value: ``` bin/skipper -foo-flag='{foo: hello, bar: [world, "1"], baz: 2, qux: {baz: 3}}' ``` and equivalent branch in config yaml: ```yaml foo-flag: foo: hello bar: - world - "1" baz: 2 qux: baz: 3 ``` This will be useful for zalando#2104 It is also a better alternative to manual parsing of micro-syntax like e.g. implemented in zalando#2888 Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
OpenTracing is deprecated, see opentracing/specification#163
Migration plan 1
Initial idea implemented by #2578 was to refactor all the code to use OpenTelemetry tracer and provide an adapter that implements OpenTelemetry API but uses OpenTracing tracer to send tracing data.
Then in subsequent steps introduce first-class OpenTelemetry tracer and switch to it.
Migration plan 2
Plan 1 has two downsides:
I propose the following migration plan:
1. Enable OpenTelemetry SDK
This is a suggested path in the official migration guide.
The idea is to make Skipper talk OpenTelemetry protocol to the telemetry backend (Lightstep in our case) and keep existing components intact and continue using OpenTracing API via bridge component.
OpenTracing API is deprecated which in other words means it is stable and is very unlikely to be changed:
This will achieve the goal of using OpenTelemetry from external point of view without introducing breaking changes for users.
2. Use OpenTelemetry API in new components
For all new components use OpenTelemetry API. These new components will not work for users that use OpenTracing but this will be an incentive to migrate.
3. Refactor existing components one-by-one to use OpenTelemetry API
This should be done case-by-case and depends on the components.
We may deprecated OpenTracing filters and add complementary OpenTelemtry filters that use OpenTelemetry API and proper naming (e.g. for
tracingTag
addtracingAttribute
, etc)We may refactor HTTP and Redis clients to use OpenTelemetry API or support both OpenTracing and OpenTelemetry tracers.
The most complex is the Proxy component which we may tackle the last after learning from migration of other components.
The text was updated successfully, but these errors were encountered: