Update otlptranslator with new API (#16626)

* Update otlptranslator with new API

Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>

---------

Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
This commit is contained in:
Arthur Silva Sens 2025-05-29 09:24:02 -03:00 committed by GitHub
parent ab1b1db128
commit 24057883a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 44 additions and 12 deletions

2
go.mod
View File

@ -189,7 +189,7 @@ require (
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 github.com/prometheus/otlptranslator v0.0.0-20250527173959-2573485683d5
github.com/prometheus/procfs v0.15.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/objx v0.5.2 // indirect

4
go.sum
View File

@ -428,8 +428,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/
github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI=
github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg=
github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA=
github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07 h1:YaJ1JqyKGIUFIMUpMeT22yewZMXiTt5sLgWG1D/m4Yc= github.com/prometheus/otlptranslator v0.0.0-20250527173959-2573485683d5 h1:LCbPeVKZSu9RS4CsaDCOmDCcribskJ8c6H5u1VvyxY0=
github.com/prometheus/otlptranslator v0.0.0-20250320144820-d800c8b0eb07/go.mod h1:ZO/4EUanXL7wbvfMHcS+rq9sCBxICdaU8RBFkVg5wv0= github.com/prometheus/otlptranslator v0.0.0-20250527173959-2573485683d5/go.mod h1:v1PzmPjSnNkmZSDvKJ9OmsWcmWMEF5+JdllEcXrRfzM=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=

View File

@ -761,6 +761,9 @@ func TestPrometheusConverter_addExponentialHistogramDataPoints(t *testing.T) {
metric := tt.metric() metric := tt.metric()
converter := NewPrometheusConverter() converter := NewPrometheusConverter()
namer := otlptranslator.MetricNamer{
WithMetricSuffixes: true,
}
annots, err := converter.addExponentialHistogramDataPoints( annots, err := converter.addExponentialHistogramDataPoints(
context.Background(), context.Background(),
metric.ExponentialHistogram().DataPoints(), metric.ExponentialHistogram().DataPoints(),
@ -768,7 +771,7 @@ func TestPrometheusConverter_addExponentialHistogramDataPoints(t *testing.T) {
Settings{ Settings{
ExportCreatedMetric: true, ExportCreatedMetric: true,
}, },
otlptranslator.BuildCompliantMetricName(metric, "", true), namer.Build(translatorMetricFromOtelMetric(metric)),
pmetric.AggregationTemporalityCumulative, pmetric.AggregationTemporalityCumulative,
) )
require.NoError(t, err) require.NoError(t, err)
@ -1129,6 +1132,9 @@ func TestPrometheusConverter_addCustomBucketsHistogramDataPoints(t *testing.T) {
metric := tt.metric() metric := tt.metric()
converter := NewPrometheusConverter() converter := NewPrometheusConverter()
namer := otlptranslator.MetricNamer{
WithMetricSuffixes: true,
}
annots, err := converter.addCustomBucketsHistogramDataPoints( annots, err := converter.addCustomBucketsHistogramDataPoints(
context.Background(), context.Background(),
metric.Histogram().DataPoints(), metric.Histogram().DataPoints(),
@ -1137,7 +1143,7 @@ func TestPrometheusConverter_addCustomBucketsHistogramDataPoints(t *testing.T) {
ExportCreatedMetric: true, ExportCreatedMetric: true,
ConvertHistogramsToNHCB: true, ConvertHistogramsToNHCB: true,
}, },
otlptranslator.BuildCompliantMetricName(metric, "", true), namer.Build(translatorMetricFromOtelMetric(metric)),
pmetric.AggregationTemporalityCumulative, pmetric.AggregationTemporalityCumulative,
) )

View File

@ -65,8 +65,38 @@ func NewPrometheusConverter() *PrometheusConverter {
} }
} }
func translatorMetricFromOtelMetric(metric pmetric.Metric) otlptranslator.Metric {
m := otlptranslator.Metric{
Name: metric.Name(),
Unit: metric.Unit(),
Type: otlptranslator.MetricTypeUnknown,
}
switch metric.Type() {
case pmetric.MetricTypeGauge:
m.Type = otlptranslator.MetricTypeGauge
case pmetric.MetricTypeSum:
if metric.Sum().AggregationTemporality() == pmetric.AggregationTemporalityCumulative {
m.Type = otlptranslator.MetricTypeMonotonicCounter
} else {
m.Type = otlptranslator.MetricTypeNonMonotonicCounter
}
case pmetric.MetricTypeSummary:
m.Type = otlptranslator.MetricTypeSummary
case pmetric.MetricTypeHistogram:
m.Type = otlptranslator.MetricTypeHistogram
case pmetric.MetricTypeExponentialHistogram:
m.Type = otlptranslator.MetricTypeExponentialHistogram
}
return m
}
// FromMetrics converts pmetric.Metrics to Prometheus remote write format. // FromMetrics converts pmetric.Metrics to Prometheus remote write format.
func (c *PrometheusConverter) FromMetrics(ctx context.Context, md pmetric.Metrics, settings Settings) (annots annotations.Annotations, errs error) { func (c *PrometheusConverter) FromMetrics(ctx context.Context, md pmetric.Metrics, settings Settings) (annots annotations.Annotations, errs error) {
namer := otlptranslator.MetricNamer{
Namespace: settings.Namespace,
WithMetricSuffixes: settings.AddMetricSuffixes,
UTF8Allowed: settings.AllowUTF8,
}
c.everyN = everyNTimes{n: 128} c.everyN = everyNTimes{n: 128}
resourceMetricsSlice := md.ResourceMetrics() resourceMetricsSlice := md.ResourceMetrics()
@ -114,12 +144,7 @@ func (c *PrometheusConverter) FromMetrics(ctx context.Context, md pmetric.Metric
continue continue
} }
var promName string promName := namer.Build(translatorMetricFromOtelMetric(metric))
if settings.AllowUTF8 {
promName = otlptranslator.BuildMetricName(metric, settings.Namespace, settings.AddMetricSuffixes)
} else {
promName = otlptranslator.BuildCompliantMetricName(metric, settings.Namespace, settings.AddMetricSuffixes)
}
c.metadata = append(c.metadata, prompb.MetricMetadata{ c.metadata = append(c.metadata, prompb.MetricMetadata{
Type: otelMetricTypeToPromMetricType(metric), Type: otelMetricTypeToPromMetricType(metric),
MetricFamilyName: promName, MetricFamilyName: promName,

View File

@ -48,7 +48,8 @@ func TestFromMetrics(t *testing.T) {
metricSlice := scopeMetricsSlice.At(j).Metrics() metricSlice := scopeMetricsSlice.At(j).Metrics()
for k := 0; k < metricSlice.Len(); k++ { for k := 0; k < metricSlice.Len(); k++ {
metric := metricSlice.At(k) metric := metricSlice.At(k)
promName := otlptranslator.BuildCompliantMetricName(metric, "", false) namer := otlptranslator.MetricNamer{}
promName := namer.Build(translatorMetricFromOtelMetric(metric))
expMetadata = append(expMetadata, prompb.MetricMetadata{ expMetadata = append(expMetadata, prompb.MetricMetadata{
Type: otelMetricTypeToPromMetricType(metric), Type: otelMetricTypeToPromMetricType(metric),
MetricFamilyName: promName, MetricFamilyName: promName,