Address comments
CI / Go tests (push) Has been cancelled Details
CI / More Go tests (push) Has been cancelled Details
CI / Go tests with previous Go version (push) Has been cancelled Details
CI / UI tests (push) Has been cancelled Details
CI / Go tests on Windows (push) Has been cancelled Details
CI / Mixins tests (push) Has been cancelled Details
CI / Build Prometheus for common architectures (0) (push) Has been cancelled Details
CI / Build Prometheus for common architectures (1) (push) Has been cancelled Details
CI / Build Prometheus for common architectures (2) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (0) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (1) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (10) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (11) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (2) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (3) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (4) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (5) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (6) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (7) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (8) (push) Has been cancelled Details
CI / Build Prometheus for all architectures (9) (push) Has been cancelled Details
CI / Check generated parser (push) Has been cancelled Details
CI / golangci-lint (push) Has been cancelled Details
CI / fuzzing (push) Has been cancelled Details
CI / codeql (push) Has been cancelled Details
CI / Report status of build Prometheus for all architectures (push) Has been cancelled Details
CI / Publish main branch artifacts (push) Has been cancelled Details
CI / Publish release artefacts (push) Has been cancelled Details
CI / Publish UI on npm Registry (push) Has been cancelled Details

Signed-off-by: Arthur Silva Sens <arthursens2005@gmail.com>
This commit is contained in:
Arthur Silva Sens 2025-05-27 15:11:26 -03:00
parent dcf3f003b6
commit ade2bc6895
No known key found for this signature in database
3 changed files with 36 additions and 25 deletions

View File

@ -761,7 +761,9 @@ func TestPrometheusConverter_addExponentialHistogramDataPoints(t *testing.T) {
metric := tt.metric()
converter := NewPrometheusConverter()
converter.metricNamer.WithMetricSuffixes = true
namer := otlptranslator.MetricNamer{
WithMetricSuffixes: true,
}
annots, err := converter.addExponentialHistogramDataPoints(
context.Background(),
metric.ExponentialHistogram().DataPoints(),
@ -769,7 +771,7 @@ func TestPrometheusConverter_addExponentialHistogramDataPoints(t *testing.T) {
Settings{
ExportCreatedMetric: true,
},
converter.metricNamer.Build(otlptranslator.Metric{Name: metric.Name(), Unit: metric.Unit(), Type: otelTypeToTranslatorType(metric)}),
namer.Build(translatorMetricFromOtelMetric(metric)),
pmetric.AggregationTemporalityCumulative,
)
require.NoError(t, err)
@ -1130,7 +1132,9 @@ func TestPrometheusConverter_addCustomBucketsHistogramDataPoints(t *testing.T) {
metric := tt.metric()
converter := NewPrometheusConverter()
converter.metricNamer.WithMetricSuffixes = true
namer := otlptranslator.MetricNamer{
WithMetricSuffixes: true,
}
annots, err := converter.addCustomBucketsHistogramDataPoints(
context.Background(),
metric.Histogram().DataPoints(),
@ -1139,7 +1143,7 @@ func TestPrometheusConverter_addCustomBucketsHistogramDataPoints(t *testing.T) {
ExportCreatedMetric: true,
ConvertHistogramsToNHCB: true,
},
converter.metricNamer.Build(otlptranslator.Metric{Name: metric.Name(), Unit: metric.Unit(), Type: otelTypeToTranslatorType(metric)}),
namer.Build(translatorMetricFromOtelMetric(metric)),
pmetric.AggregationTemporalityCumulative,
)

View File

@ -52,45 +52,51 @@ type Settings struct {
// PrometheusConverter converts from OTel write format to Prometheus remote write format.
type PrometheusConverter struct {
unique map[uint64]*prompb.TimeSeries
conflicts map[uint64][]*prompb.TimeSeries
everyN everyNTimes
metadata []prompb.MetricMetadata
metricNamer *otlptranslator.MetricNamer
unique map[uint64]*prompb.TimeSeries
conflicts map[uint64][]*prompb.TimeSeries
everyN everyNTimes
metadata []prompb.MetricMetadata
}
func NewPrometheusConverter() *PrometheusConverter {
return &PrometheusConverter{
unique: map[uint64]*prompb.TimeSeries{},
conflicts: map[uint64][]*prompb.TimeSeries{},
metricNamer: &otlptranslator.MetricNamer{},
unique: map[uint64]*prompb.TimeSeries{},
conflicts: map[uint64][]*prompb.TimeSeries{},
}
}
func otelTypeToTranslatorType(metric pmetric.Metric) otlptranslator.MetricType {
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:
return otlptranslator.MetricTypeGauge
m.Type = otlptranslator.MetricTypeGauge
case pmetric.MetricTypeSum:
if metric.Sum().AggregationTemporality() == pmetric.AggregationTemporalityCumulative {
return otlptranslator.MetricTypeMonotonicCounter
m.Type = otlptranslator.MetricTypeMonotonicCounter
} else {
m.Type = otlptranslator.MetricTypeNonMonotonicCounter
}
return otlptranslator.MetricTypeNonMonotonicCounter
case pmetric.MetricTypeSummary:
return otlptranslator.MetricTypeSummary
m.Type = otlptranslator.MetricTypeSummary
case pmetric.MetricTypeHistogram:
return otlptranslator.MetricTypeHistogram
m.Type = otlptranslator.MetricTypeHistogram
case pmetric.MetricTypeExponentialHistogram:
return otlptranslator.MetricTypeExponentialHistogram
m.Type = otlptranslator.MetricTypeExponentialHistogram
}
return otlptranslator.MetricTypeUnknown
return m
}
// 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) {
c.metricNamer.Namespace = settings.Namespace
c.metricNamer.WithMetricSuffixes = settings.AddMetricSuffixes
c.metricNamer.UTF8Allowed = settings.AllowUTF8
namer := otlptranslator.MetricNamer{
Namespace: settings.Namespace,
WithMetricSuffixes: settings.AddMetricSuffixes,
UTF8Allowed: settings.AllowUTF8,
}
c.everyN = everyNTimes{n: 128}
resourceMetricsSlice := md.ResourceMetrics()
@ -138,7 +144,7 @@ func (c *PrometheusConverter) FromMetrics(ctx context.Context, md pmetric.Metric
continue
}
promName := c.metricNamer.Build(otlptranslator.Metric{Name: metric.Name(), Unit: metric.Unit(), Type: otelTypeToTranslatorType(metric)})
promName := namer.Build(translatorMetricFromOtelMetric(metric))
c.metadata = append(c.metadata, prompb.MetricMetadata{
Type: otelMetricTypeToPromMetricType(metric),
MetricFamilyName: promName,

View File

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