Add experimental view_matching_mode (composable metric views) support
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- java
- Área
- backend-api-design, databases
Línea de trabajo
Start with ViewRegistry.findViews(...) in sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/view/ViewRegistry.java, then read the specification sections linked in the issue for stream grouping and merging rules. Inspect ViewBuilder and View for configured-property tracking, and SdkMeterProviderUtil for the experimental setter pattern; wire MeterProviderModelAccessor.getViewMatchingMode(model) from MeterProviderFactory.create(...). Done means composable matching, precedence, attribute filtering, and advisory fallback follow the specification while independent remains the default.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
The OpenTelemetry Metrics SDK specification defines an experimental (Development) view_matching_mode configuration parameter (independent vs. composable) on MeterProvider to compose multiple matching Views (for example, combining a broad policy View that filters attributes or disables instruments with an instrument-specific View that customizes aggregation) into merged metric streams rather than emitting duplicate/conflicting streams (specification/metrics/sdk.md#L519-L543, introduced in https://github.com/open-telemetry/opentelemetry-specification/pull/5173).
Currently in opentelemetry-java:
ViewRegistry.findViews(...)only implementsindependentmatching, evaluating each matchingViewas a separate stream: https://github.com/open-telemetry/opentelemetry-java/blob/f02bddc4091f56d68b60b4c433afcec64c8d97b9/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/view/ViewRegistry.java#L99-L155opentelemetry-sdk-extension-declarative-config(:sdk-extensions:declarative-config) includes theview_matching_mode/developmentmodel accessor (MeterProviderModelAccessor.getViewMatchingMode), butMeterProviderFactory.create(...)does not yet wire it toSdkMeterProviderBuilder:- https://github.com/open-telemetry/opentelemetry-java/blob/f02bddc4091f56d68b60b4c433afcec64c8d97b9/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/model/internal/MeterProviderModelAccessor.java#L52-L58
- https://github.com/open-telemetry/opentelemetry-java/blob/f02bddc4091f56d68b60b4c433afcec64c8d97b9/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MeterProviderFactory.java#L40-L107
Proposal
Implement experimental support for view_matching_mode (independent default, composable opt-in) in opentelemetry-sdk-metrics and wire it in opentelemetry-sdk-extension-declarative-config:
- Expose an experimental
view_matching_modesetter onSdkMeterProviderBuilderviaSdkMeterProviderUtil(following the pattern in https://github.com/open-telemetry/opentelemetry-java/blob/f02bddc4091f56d68b60b4c433afcec64c8d97b9/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/SdkMeterProviderUtil.java#L70-L84). - Implement
composableView grouping and stream merging inopentelemetry-sdk-metrics(ViewBuilder/ViewandViewRegistry) per the specification:- Form a stream group for each distinct configured
Viewnamecontaining matchingViews with thatnameplus all matchingViews withname == null(or a single default-named group if no matchingViewsetsname). - Track explicitly configured
ViewBuilderproperties (distinguishing unset properties fromViewBuilder's default field values inViewBuilder.java#L26-L30) to apply atomic last-wins precedence across non-attribute_keysstream settings, falling back per-aspect to the preceding validViewin the group (or default) with a warning on semantic errors rather than discarding the entireRegisteredView. - Compose specified
attribute_keyspredicates via logical AND, and override instrument advisory parameters only for aspects configured by matchingViews in the group (falling back to instrument advisory parameters otherwise).
- Form a stream group for each distinct configured
- Wire
MeterProviderModelAccessor.getViewMatchingMode(model)inMeterProviderFactory.create(...).
Additional Context
- Specification PR: https://github.com/open-telemetry/opentelemetry-specification/pull/5173 (open clarification PR: https://github.com/open-telemetry/opentelemetry-specification/pull/5414)
- Specification stabilization tracking issue: https://github.com/open-telemetry/opentelemetry-specification/issues/5385
- Declarative configuration schema PR: https://github.com/open-telemetry/opentelemetry-configuration/pull/666
- Reference Go prototype: https://github.com/open-telemetry/opentelemetry-go/pull/8510
- Related Java PR (
OptIninstrument advice andViewenabledconfiguration): https://github.com/open-telemetry/opentelemetry-java/pull/8979
- Lenguaje dominante
- Java
- Estrellas
- 2.5k
- Forks
- 1k
- Merge medio
- 4 d 3 h
- PR fusionados (30 d)
- 52
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de open-telemetry/opentelemetry-java
-
PrometheusComponentProvider promotes all resource attributes when resource_constant_labels is empty ({})Posiblemente ocupada @rooks-ns la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
open-telemetry/opentelemetry-java#9014 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
open-telemetry/opentelemetry-java#9011 ·
Los mantenedores suelen responder en 2 días
-
Fix `otel.sdk.log.created` counting semanticsPosiblemente ocupada @anuraaga la tomó hace 93 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
open-telemetry/opentelemetry-java#8688 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
open-telemetry/opentelemetry-java#9012 ·
Los mantenedores suelen responder en 2 días
-
SimpleLogRecordProcessor/SimpleSpanProcessor.forceFlush() result never completes when an export completes while ofAll() counts the pending setPosiblemente ocupada @nikhilred2619 la tomó hace 4 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
open-telemetry/opentelemetry-java#8995 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de open-telemetry/opentelemetry-java
Issues similares
-
bug web-ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
jenkinsci/jenkins#27705 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
googleads/googleads-mobile-flutter#1541 ·
Los mantenedores suelen responder en 4 días
-
Keyboard crashes Chrome tabsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Julow/Unexpected-Keyboard#1490 ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Vakore/ZappierGames#275 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
unitycatalog/unitycatalog#2148 ·
Los mantenedores suelen responder en 2 días