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

Support injecting instrumentation via the OpenTelemetry Operator in Kubernetes #606

Open
devrimdemiroz opened this issue Nov 22, 2022 · 5 comments
Labels
enhancement New feature or request telemetry issues that relate to the telemetry generated by the demo

Comments

@devrimdemiroz
Copy link
Contributor

Feature Request

Currently, auto-instrumentation is injected via Docker file.

While having it for Docker deployment is fine, for Kubernetes deployment, it is a preferred option to get it injected automatically via opentelemetry-operator.

Describe the solution you'd like:

Instead, agent(s) can be injected via opentelemetry-operator

annotations:
  instrumentation.opentelemetry.io/inject-java: otel-agent-xxxxx

@devrimdemiroz devrimdemiroz added the enhancement New feature or request label Nov 22, 2022
@JaredTan95
Copy link
Member

I think it should be solved by #244

becauese the opentelemetry-operator will inject the java agent sidecar/initcontainer and override the JAVA_TOOL_OPTIONS value.

annotations:
  instrumentation.opentelemetry.io/inject-java: otel-agent-xxxxx

@devrimdemiroz
Copy link
Contributor Author

@JaredTan95 ,
I put java as an example. Same applies for other languages so far supported via operator injection.

@puckpuck
Copy link
Contributor

All the existing services in the demo have manual instrumentation, which requires them to be compiled with the Otel SDKs/Agents for them to run.

There is the potential for this with the addition of new services where we don't do any manual instrumentation in them and have those new services auto-instrumented only using operator injection. In particular, I think the Message queue implementation with 2 new services would be a good candidate for this.

@devrimdemiroz
Copy link
Contributor Author

@puckpuck

I still did not deep dive into particular services. However, here (except C++) each service is marked with both auto and manual instrumentation. If the page is correct, we will lose the manual instrumentation provided as demo but still have auto instrumentation in hand. Do I get it right?

@puckpuck
Copy link
Contributor

To provide some status on this issue.

As a top-level item, moving to support the Operator is dependent on either adding similar functionality to the existing docker-based dev environment or dropping support completely for docker as a local dev environment which is currently up for discussion in #635

In the SIG meetings, we have decided to add auto-instrumentation via the Operator for the accountingservice and fraudservice components of the demo. Since these services communicate with Kafka, we need to ensure they are written in languages that have Kafka auto-instrumentation available and can be instrumented with the Operator.

Currently, these services are written in Go and Java:

  • fraudservice - Java
  • accountingservice - Go

Without Go support for Operator based auto-instrumentation, we need re-write the accountingservice in another language. The Operator currently supports:

  • Java
  • Javascript
  • Python
  • .NET

Since we already have an auto-instrumented service in Java, a different language would be preferred that also supports Kafka auto-instrumentation. The Otel-Demo already contains 2 services using the JavaScript SDK. We also have 1 service + load generator using the Python SDK. This leaves .NET as the top candidate. Unfortunately the .NET SDK does not yet support Kafka auto-instrumentation. If delivery of Kafka auto-instrumentation with the .NET SDK is not imminent we will look to rewrite the service using Python instead.

@austinlparker austinlparker added v1.4 required for 1.4 release telemetry issues that relate to the telemetry generated by the demo labels Feb 6, 2023
@austinlparker austinlparker changed the title operator instrumentation inject support Support injecting instrumentation via the OpenTelemetry Operator in Kubernetes Feb 6, 2023
@austinlparker austinlparker removed the v1.4 required for 1.4 release label Apr 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request telemetry issues that relate to the telemetry generated by the demo
Projects
None yet
Development

No branches or pull requests

4 participants