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
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:
This would propagate as --enable-feature=exemplar-storage on the Prometheus container args.
Alternatives you've considered
Additional context