feat: Add materialization, feature freshness, request latency, and push metrics to feature server by ntkathole · Pull Request #6071 · feast-dev/feast
What this PR does / why we need it:
Adds rich Prometheus metrics to the Feast feature server covering areas that previously had no observability:
- Request latency histograms with
feature_countandfeature_view_countlabels so operators can correlate latency with request complexity - Materialization tracking — success/failure counters and duration histograms per feature view
- Feature freshness gauges — staleness (seconds since last materialization) per feature view, updated via background polling
- Online feature retrieval counters — request counts and entity-row-per-request histograms
- Push request counters — tracked by push source and mode (online/offline)
- CPU and memory gauges — moved from inline code to the shared metrics module
Previously the feature server only had inline CPU/memory monitoring. This PR introduces 10 new metric families covering the full request lifecycle, materialization pipeline, and data freshness.
New metrics
| Metric | Type | Labels |
|---|---|---|
feast_feature_server_request_total |
Counter | endpoint, status |
feast_feature_server_request_latency_seconds |
Histogram | endpoint, feature_count, feature_view_count |
feast_online_features_request_total |
Counter | — |
feast_online_features_entity_count |
Histogram | — |
feast_push_request_total |
Counter | push_source, mode |
feast_materialization_total |
Counter | feature_view, status |
feast_materialization_duration_seconds |
Histogram | feature_view |
feast_feature_freshness_seconds |
Gauge | feature_view, project |
feast_feature_server_cpu_usage |
Gauge | — |
feast_feature_server_memory_usage |
Gauge | — |
Configuration
Metrics are fully opt-in with zero overhead when disabled. Enable via CLI or YAML:
feature_server: metrics: enabled: true resource: true # CPU / memory gauges request: true # endpoint latency & request counters online_features: true # online feature retrieval counters push: true # push request counters materialization: true # materialization counters & duration freshness: true # per-feature-view freshness gauges
Per-category toggles let disable specific metric groups (e.g., keep CPU/memory but skip request latency). All categories default to true. The --metrics CLI flag works without any YAML config.

