Skip to content

[FEATURE] Add enableFeatures field to MonitoringStack prometheusConfig #995

@emilarnesen

Description

@emilarnesen

Is your feature request related to a problem?

The MonitoringStack CRD does not expose a way to enable Prometheus feature flags (e.g. --enable-feature=exemplar-storage). This prevents users from enabling exemplar storage on Prometheus instances managed by the operator.

Our use case:

We run Tempo's metrics generator which produces span-metrics (traces_spanmetrics_calls_total, traces_spanmetrics_latency_bucket) and writes them to a MonitoringStack Prometheus via remote write with send_exemplars: true. The exemplars carry trace IDs that would enable Metrics → Traces correlation in Grafana. However, the receiving Prometheus silently drops exemplars because exemplar storage is not enabled, and there is no way to enable it through the MonitoringStack API.

Describe the solution you'd like:

Add an enableFeatures field to MonitoringStack.spec.prometheusConfig, similar to the enableFeatures field on the upstream Prometheus CRD:

  apiVersion: monitoring.rhobs/v1alpha1
  kind: MonitoringStack
  spec:
    prometheusConfig:
      enableFeatures:
        - exemplar-storage

This would propagate as --enable-feature=exemplar-storage on the Prometheus container args.

Alternatives you've considered

  • Manually patching the Prometheus StatefulSet — overwritten on operator reconciliation
  • Using enableOtlpHttpReceiver — unclear if this enables exemplar storage as a side effect. Also this would require us to configure OTEL collector to send exemplar data on the OTLP protocol to prometheus.

Additional context

  • COO version: v1.3.1 (latest stable)
  • OpenShift: 4.18
  • Prometheus version shipped: ~2.55.1
  • The enableRemoteWriteReceiver and enableOtlpHttpReceiver fields already exist as feature-specific booleans — enableFeatures would be a more generic solution covering current and future needs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions