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

Enable OpenTelemetry instrumentation #335

Open
devpro opened this issue Jan 19, 2024 · 5 comments
Open

Enable OpenTelemetry instrumentation #335

devpro opened this issue Jan 19, 2024 · 5 comments
Assignees
Labels
area/observability enhancement New feature or request

Comments

@devpro
Copy link

devpro commented Jan 19, 2024

Description

Would it be possible to enable OpenTelemetry Go instrumentation in ngrok Ingress Controller?

OpenTelemetry, the most trending project of the CNCF after Kubernetes for many years, is the new standard for observability. It is currently the best way to send valuable information (3 pillars of observability) to the OpenTelemetry collector that can then share this data to any kind of data platform (such as Grafana, Elastic Stack, Splunk, etc.) just by configuration, in a decoupled and resilient way, avoiding any complicated solution or vendor lock-in.

Use Case

Be able to gather all observable data (logs, metrics, traces) directly from the containers, following the same standard, and be able to easily monitor, investigate, take action from dashboards where all information of the same system will be regrouped.

Related issues

No response

@devpro devpro added enhancement New feature or request needs-triage Issues that need triage labels Jan 19, 2024
@salilsub
Copy link
Contributor

Investigating, would need spec before development.

@deroine deroine added area/observability and removed needs-triage Issues that need triage labels Jul 29, 2024
@alex-bezek
Copy link
Collaborator

Hello @devpro , we technically do support Open Telemetry metrics in this controller. There are some very basic docs here https://ngrok.com/docs/k8s/deployment-guide/#metrics saying to scrape port 8080 and we expose just the basic metrics included in kubebuilder. We’d like to add more custom metrics here as we have use cases and would document them as we add them. Is there anything else you are looking for in particular?

@devpro
Copy link
Author

devpro commented Oct 31, 2024

Hello @alex-bezek, thank you for your reply. I really like ngrok :)
Ideally, it would be nice to also have logs and traces, to cover the 3 pillars of observability, and get distributed tracing from the first entry in ngrok (link it with the calls to the apps/services).
I was thinking about having a way to configure an exporter like OpenTelemetry Collector URL so ngrok sends all this data with OpenTelemetry standard (through OTLP).

@alex-bezek
Copy link
Collaborator

Gotcha, thanks for the information @devpro . Today our logs and metrics FYI are just about the operator itself. Logs about how its creating/updating resources, and metrics from kubebuilder about the number of reconcile loops that have been run and whatnot. You are right, we don't have any distributed tracing setup.

What kind of traces would you be looking for that would provide the most value for you? For example, similar to how we expose metrics about the internal controllers of the operator, we could also build traces of our controller reconcilers. Or are you looking for traces about requests going through online tunnels and what components in the ngrok could, the controller, and your backend apps/services that respond.

@devpro
Copy link
Author

devpro commented Nov 5, 2024

Thank you for the detailed feedback!

I would be indeed very interested to know about the requests going through the ngrok Controller and ideally corelate them with the Kubernetes applications that are processing the requests. For supervision, investigation, optimization, distributed tracing is awesome and OpenTelemetry makes it very easy (a standard with span_id, parent_id).

For instance, currently I can see from my web app, with a timed flow, the different calls made to microservices, databases (like MongoDB), messaging (like Kafka). Being able to get the request from the very start of Kubernetes (Ingress Controller) would be great to get the full picture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/observability enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants