PrometheusComponentProvider promotes all resource attributes when resource_constant_labels is empty ({})

Aperta Adatta ai principianti
#9,014 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

@rooks-ns ci sta già lavorando.

Dal 7/11/2026.

  • #9015 di @rooks-ns — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java, prometheus

Direzione di ricerca

Inizia da exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java, in particolare dall’analisi di resource_constant_labels intorno alle righe 63–76, e segui il percorso con cui una configurazione vuota raggiunge IncludeExcludePredicate.createPatternMatching. Controlla prima i test correlati del predicato e i test dell’esportatore Prometheus. Il lavoro è completato quando una mappa vuota non aggiunge attributi della risorsa come etichette delle metriche e la configurazione è coperta da un test di regressione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

In PrometheusComponentProvider.java, configuring an empty resource_constant_labels: {} map in declarative configuration promotes all resource attributes onto every Prometheus metric series instead of none.

resource_constant_labels: {} is currently valid against the opentelemetry-configuration JSON Schema ($defs.IncludeExclude sets minItems: 1 on included and excluded, not minProperties: 1 on the object). When parsed:

meter_provider:
  readers:
    - pull:
        exporter:
          prometheus/development:
            resource_constant_labels: {}

config.getStructured("resource_constant_labels") returns a non-null DeclarativeConfigProperties where both included and excluded are null, and passes (null, null) to IncludeExcludePredicate.createPatternMatching(null, null), which returns an include-all predicate (attributeKey -> true).

Expected behavior

Per the Prometheus exporter specification (By default, it MUST NOT add any resource attributes as metric labels) and ExperimentalPrometheusMetricExporter.resource_constant_labels (defaultBehavior: no resource attributes are added), when both included and excluded are null (matching Collector's pkg/resourcetotelemetry IsEmpty() check), no resource attributes should be added as metric labels (or empty {} should be rejected if disallowed by opentelemetry-configuration).

Lingua principale
Java
Stelle
2.5k
Fork
1k
Merge medio
4g 3h
PR unite (30g)
52

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di open-telemetry/opentelemetry-java

Tutte le issue di open-telemetry/opentelemetry-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.