feat: Add OTEL based observability to the Go Feature Server#5685
feat: Add OTEL based observability to the Go Feature Server#5685shuchu merged 7 commits intofeast-dev:masterfrom
Conversation
Signed-off-by: Shuchu Han <shuchu.han@gmail.com>
Signed-off-by: Shuchu Han <shuchu.han@gmail.com>
Signed-off-by: Shuchu Han <shuchu.han@gmail.com>
There was a problem hiding this comment.
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 <shuchu.han@gmail.com>
Signed-off-by: Shuchu Han <shuchu.han@gmail.com>
There was a problem hiding this comment.
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.
probably this needs to be execute before server stop ?
# [0.56.0](v0.55.0...v0.56.0) (2025-10-27) ### Bug Fixes * Add mode field to Transformation proto for proper serialization ([2390d2e](2390d2e)) * Date wise remote offline store historical data retrieval ([#5686](#5686)) ([949ba3d](949ba3d)) * Fix STRING type handling in on-demand feature views ([#5669](#5669)) ([dfbb743](dfbb743)) * Fixed torch install issue in CI ([366e5a8](366e5a8)) * ODFV not getting counted in resource count ([1d640b6](1d640b6)) * Skip tag updates if user do not have permissions ([#5673](#5673)) ([0a951ce](0a951ce)) ### Features * Add document of Go feature server. ([#5697](#5697)) ([cbd1dde](cbd1dde)) * Add flexible commandArgs support for complete Feast CLI control ([#5678](#5678)) ([6414924](6414924)) * Add HDFS as a feature registry ([#5655](#5655)) ([4c65872](4c65872)) * Add nodeSelector to service config ([#5675](#5675)) ([9728cde](9728cde)) * Add OTEL based observability to the Go Feature Server ([#5685](#5685)) ([f4afdad](f4afdad)) * Added health endpoint for the UI ([#5665](#5665)) ([3aec5d5](3aec5d5)) * Added kuberay support ([e0b698d](e0b698d)) * Added support for filtering multi-projects ([#5688](#5688)) ([eb0a86e](eb0a86e)) * Batch Embedding at scale for RAG with Ray ([cc2a46d](cc2a46d)) * Optimize SQL entity handling without creating temporary tables ([#5695](#5695)) ([aa2c838](aa2c838)) * Support aggregation in odfv ([#5666](#5666)) ([564e965](564e965)) * Support cache_mode for registries ([021e9ea](021e9ea))
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