-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat: Add OTEL based observability to the Go Feature Server #5685
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
Conversation
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds OpenTelemetry (OTEL) based observability to the Go Feature Server, replacing the previously commented-out DataDog tracing implementation. The changes enable distributed tracing through OTEL exporters with support for Jaeger and Prometheus monitoring.
Key changes:
- Integrated OTEL tracing SDK with HTTP exporter configuration
- Added tracing instrumentation across critical code paths (HTTP/gRPC servers, Redis store, transformations)
- Provided Docker Compose setup with Prometheus, Jaeger, and OTEL collector for local monitoring
Reviewed Changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| go/main.go | Initializes OTEL tracer provider and exporter based on environment variable |
| go/internal/feast/transformation/transformation.go | Adds span tracing to transformation operations |
| go/internal/feast/server/server_commons.go | Updates logging to include trace/span context from OTEL spans |
| go/internal/feast/server/http_server.go | Instruments HTTP endpoint with tracing and restores span-aware logging |
| go/internal/feast/server/grpc_server.go | Instruments gRPC endpoint with tracing and restores span-aware logging |
| go/internal/feast/onlinestore/redisonlinestore.go | Adds tracing to Redis online store read operations |
| go/internal/feast/featurestore.go | Instruments feature store read operations with tracing |
| go/infra/docker/otel/prometheus.yaml | Prometheus scrape configuration for OTEL collector metrics |
| go/infra/docker/otel/otel-collector-config.yaml | OTEL collector pipeline configuration for traces and metrics |
| go/infra/docker/otel/compose.yaml | Docker Compose setup for monitoring infrastructure |
| go/README.md | Documentation for OTEL observability setup and configuration |
| go.mod | Updates Go version and adds OTEL dependencies |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| } | ||
|
|
||
| // Handle shutdown properly so nothing leaks. | ||
| defer func() { _ = tp.Shutdown(ctx) }() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
probably this needs to be execute before server stop ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
What this PR does / why we need it:
Add OTEL based observability to Go Feature Server
Which issue(s) this PR fixes:
Fix #4821
Misc