Skip to content

Commit 1139675

Browse files
dashpolecrobert-1
andauthored
chore: add constants for prometheus translation (#32830)
**Description:** This is a cleanup to consolidate the constants used for prometheus translation in a single place. --------- Co-authored-by: Curtis Robert <[email protected]>
1 parent 984a185 commit 1139675

File tree

7 files changed

+52
-41
lines changed

7 files changed

+52
-41
lines changed

exporter/prometheusexporter/collector.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ import (
1818
prometheustranslator "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
1919
)
2020

21-
const (
22-
targetMetricName = "target_info"
23-
)
24-
2521
var (
2622
separatorString = string([]byte{model.SeparatorByte})
2723
)
@@ -56,11 +52,11 @@ func convertExemplars(exemplars pmetric.ExemplarSlice) []prometheus.Exemplar {
5652
exemplarLabels := make(prometheus.Labels, 0)
5753

5854
if traceID := e.TraceID(); !traceID.IsEmpty() {
59-
exemplarLabels["trace_id"] = hex.EncodeToString(traceID[:])
55+
exemplarLabels[prometheustranslator.ExemplarTraceIDKey] = hex.EncodeToString(traceID[:])
6056
}
6157

6258
if spanID := e.SpanID(); !spanID.IsEmpty() {
63-
exemplarLabels["span_id"] = hex.EncodeToString(spanID[:])
59+
exemplarLabels[prometheustranslator.ExemplarSpanIDKey] = hex.EncodeToString(spanID[:])
6460
}
6561

6662
var value float64
@@ -332,7 +328,7 @@ func (c *collector) createTargetInfoMetrics(resourceAttrs []pcommon.Map) ([]prom
332328
labels[model.InstanceLabel] = instance
333329
}
334330

335-
name := targetMetricName
331+
name := prometheustranslator.TargetInfoMetricName
336332
if len(c.namespace) > 0 {
337333
name = c.namespace + "_" + name
338334
}
@@ -370,7 +366,7 @@ func (c *collector) Collect(ch chan<- prometheus.Metric) {
370366

371367
targetMetrics, err := c.createTargetInfoMetrics(resourceAttrs)
372368
if err != nil {
373-
c.logger.Error(fmt.Sprintf("failed to convert metric %s: %s", targetMetricName, err.Error()))
369+
c.logger.Error(fmt.Sprintf("failed to convert metric %s: %s", prometheustranslator.TargetInfoMetricName, err.Error()))
374370
}
375371
for _, m := range targetMetrics {
376372
ch <- m

pkg/translator/prometheus/constants.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,30 @@ const (
88
// type in metric metadata:
99
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#metric-metadata
1010
MetricMetadataTypeKey = "prometheus.type"
11+
// ExemplarTraceIDKey is the key used to store the trace ID in Prometheus
12+
// exemplars:
13+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#exemplars
14+
ExemplarTraceIDKey = "trace_id"
15+
// ExemplarSpanIDKey is the key used to store the Span ID in Prometheus
16+
// exemplars:
17+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#exemplars
18+
ExemplarSpanIDKey = "span_id"
19+
// ScopeInfoMetricName is the name of the metric used to preserve scope
20+
// attributes in Prometheus format:
21+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#instrumentation-scope
22+
ScopeInfoMetricName = "otel_scope_info"
23+
// ScopeNameLabelKey is the name of the label key used to identify the name
24+
// of the OpenTelemetry scope which produced the metric:
25+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#instrumentation-scope
26+
ScopeNameLabelKey = "otel_scope_name"
27+
// ScopeVersionLabelKey is the name of the label key used to identify the
28+
// version of the OpenTelemetry scope which produced the metric:
29+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#instrumentation-scope
30+
ScopeVersionLabelKey = "otel_scope_version"
31+
// TargetInfoMetricName is the name of the metric used to preserve resource
32+
// attributes in Prometheus format:
33+
// https://github.com/open-telemetry/opentelemetry-specification/blob/e6eccba97ebaffbbfad6d4358408a2cead0ec2df/specification/compatibility/prometheus_and_openmetrics.md#resource-attributes-1
34+
// It originates from OpenMetrics:
35+
// https://github.com/OpenObservability/OpenMetrics/blob/1386544931307dff279688f332890c31b6c5de36/specification/OpenMetrics.md#supporting-target-metadata-in-both-push-based-and-pull-based-systems
36+
TargetInfoMetricName = "target_info"
1137
)

pkg/translator/prometheusremotewrite/helper.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,7 @@ const (
3838
// according to the prometheus specification
3939
// https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#exemplars
4040
maxExemplarRunes = 128
41-
// Trace and Span id keys are defined as part of the spec:
42-
// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification%2Fmetrics%2Fdatamodel.md#exemplars-2
43-
traceIDKey = "trace_id"
44-
spanIDKey = "span_id"
4541
infoType = "info"
46-
targetMetricName = "target_info"
4742
)
4843

4944
type bucketBoundsData struct {
@@ -303,18 +298,18 @@ func getPromExemplars[T exemplarType](pt T) []prompb.Exemplar {
303298
}
304299
if traceID := exemplar.TraceID(); !traceID.IsEmpty() {
305300
val := hex.EncodeToString(traceID[:])
306-
exemplarRunes += utf8.RuneCountInString(traceIDKey) + utf8.RuneCountInString(val)
301+
exemplarRunes += utf8.RuneCountInString(prometheustranslator.ExemplarTraceIDKey) + utf8.RuneCountInString(val)
307302
promLabel := prompb.Label{
308-
Name: traceIDKey,
303+
Name: prometheustranslator.ExemplarTraceIDKey,
309304
Value: val,
310305
}
311306
promExemplar.Labels = append(promExemplar.Labels, promLabel)
312307
}
313308
if spanID := exemplar.SpanID(); !spanID.IsEmpty() {
314309
val := hex.EncodeToString(spanID[:])
315-
exemplarRunes += utf8.RuneCountInString(spanIDKey) + utf8.RuneCountInString(val)
310+
exemplarRunes += utf8.RuneCountInString(prometheustranslator.ExemplarSpanIDKey) + utf8.RuneCountInString(val)
316311
promLabel := prompb.Label{
317-
Name: spanIDKey,
312+
Name: prometheustranslator.ExemplarSpanIDKey,
318313
Value: val,
319314
}
320315
promExemplar.Labels = append(promExemplar.Labels, promLabel)
@@ -534,7 +529,7 @@ func addResourceTargetInfo(resource pcommon.Resource, settings Settings, timesta
534529
return
535530
}
536531

537-
name := targetMetricName
532+
name := prometheustranslator.TargetInfoMetricName
538533
if len(settings.Namespace) > 0 {
539534
name = settings.Namespace + "_" + name
540535
}

pkg/translator/prometheusremotewrite/helper_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
conventions "go.opentelemetry.io/collector/semconv/v1.6.1"
2121

2222
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata"
23+
prometheustranslator "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
2324
)
2425

2526
func Test_isValidAggregationTemporality(t *testing.T) {
@@ -462,7 +463,7 @@ func Test_getPromExemplars(t *testing.T) {
462463
{
463464
Value: floatVal1,
464465
Timestamp: timestamp.FromTime(tnow),
465-
Labels: []prompb.Label{getLabel(traceIDKey, traceIDValue1), getLabel(spanIDKey, spanIDValue1), getLabel(label11, value11)},
466+
Labels: []prompb.Label{getLabel(prometheustranslator.ExemplarTraceIDKey, traceIDValue1), getLabel(prometheustranslator.ExemplarSpanIDKey, spanIDValue1), getLabel(label11, value11)},
466467
},
467468
},
468469
},
@@ -505,7 +506,7 @@ func Test_getPromExemplars(t *testing.T) {
505506
{
506507
Value: floatVal1,
507508
Timestamp: timestamp.FromTime(tnow),
508-
Labels: []prompb.Label{getLabel(traceIDKey, traceIDValue1), getLabel(spanIDKey, spanIDValue1)},
509+
Labels: []prompb.Label{getLabel(prometheustranslator.ExemplarTraceIDKey, traceIDValue1), getLabel(prometheustranslator.ExemplarSpanIDKey, spanIDValue1)},
509510
},
510511
},
511512
},

pkg/translator/prometheusremotewrite/testutils_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/stretchr/testify/require"
1515
"go.opentelemetry.io/collector/pdata/pcommon"
1616
"go.opentelemetry.io/collector/pdata/pmetric"
17+
18+
prometheustranslator "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
1719
)
1820

1921
var (
@@ -170,7 +172,7 @@ func getExemplar(v float64, t int64) prompb.Exemplar {
170172
return prompb.Exemplar{
171173
Value: v,
172174
Timestamp: t,
173-
Labels: []prompb.Label{getLabel(traceIDKey, traceIDValue1)},
175+
Labels: []prompb.Label{getLabel(prometheustranslator.ExemplarTraceIDKey, traceIDValue1)},
174176
}
175177
}
176178

receiver/prometheusreceiver/internal/metricfamily.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ import (
2222
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
2323
)
2424

25-
const (
26-
traceIDKey = "trace_id"
27-
spanIDKey = "span_id"
28-
)
29-
3025
type metricFamily struct {
3126
mtype pmetric.MetricType
3227
// isMonotonic only applies to sums
@@ -545,15 +540,15 @@ func convertExemplar(pe exemplar.Exemplar, e pmetric.Exemplar) {
545540
e.FilteredAttributes().EnsureCapacity(pe.Labels.Len())
546541
pe.Labels.Range(func(lb labels.Label) {
547542
switch strings.ToLower(lb.Name) {
548-
case traceIDKey:
543+
case prometheus.ExemplarTraceIDKey:
549544
var tid [16]byte
550545
err := decodeAndCopyToLowerBytes(tid[:], []byte(lb.Value))
551546
if err == nil {
552547
e.SetTraceID(tid)
553548
} else {
554549
e.FilteredAttributes().PutStr(lb.Name, lb.Value)
555550
}
556-
case spanIDKey:
551+
case prometheus.ExemplarSpanIDKey:
557552
var sid [8]byte
558553
err := decodeAndCopyToLowerBytes(sid[:], []byte(lb.Value))
559554
if err == nil {

receiver/prometheusreceiver/internal/transaction.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,12 @@ import (
2424
"go.opentelemetry.io/collector/receiver"
2525
"go.opentelemetry.io/collector/receiver/receiverhelper"
2626
"go.uber.org/zap"
27-
)
2827

29-
const (
30-
targetMetricName = "target_info"
31-
scopeMetricName = "otel_scope_info"
32-
scopeNameLabel = "otel_scope_name"
33-
scopeVersionLabel = "otel_scope_version"
34-
receiverName = "otelcol/prometheusreceiver"
28+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
3529
)
3630

31+
const receiverName = "otelcol/prometheusreceiver"
32+
3733
type transaction struct {
3834
isNew bool
3935
trimSuffixes bool
@@ -138,13 +134,13 @@ func (t *transaction) Append(_ storage.SeriesRef, ls labels.Labels, atMs int64,
138134
}
139135

140136
// For the `target_info` metric we need to convert it to resource attributes.
141-
if metricName == targetMetricName {
137+
if metricName == prometheus.TargetInfoMetricName {
142138
t.AddTargetInfo(ls)
143139
return 0, nil
144140
}
145141

146142
// For the `otel_scope_info` metric we need to convert it to scope attributes.
147-
if metricName == scopeMetricName {
143+
if metricName == prometheus.ScopeInfoMetricName {
148144
t.addScopeInfo(ls)
149145
return 0, nil
150146
}
@@ -349,10 +345,10 @@ func (t *transaction) getMetrics(resource pcommon.Resource) (pmetric.Metrics, er
349345
func getScopeID(ls labels.Labels) scopeID {
350346
var scope scopeID
351347
ls.Range(func(lbl labels.Label) {
352-
if lbl.Name == scopeNameLabel {
348+
if lbl.Name == prometheus.ScopeNameLabelKey {
353349
scope.name = lbl.Value
354350
}
355-
if lbl.Name == scopeVersionLabel {
351+
if lbl.Name == prometheus.ScopeVersionLabelKey {
356352
scope.version = lbl.Value
357353
}
358354
})
@@ -431,11 +427,11 @@ func (t *transaction) addScopeInfo(ls labels.Labels) {
431427
if lbl.Name == model.JobLabel || lbl.Name == model.InstanceLabel || lbl.Name == model.MetricNameLabel {
432428
return
433429
}
434-
if lbl.Name == scopeNameLabel {
430+
if lbl.Name == prometheus.ScopeNameLabelKey {
435431
scope.name = lbl.Value
436432
return
437433
}
438-
if lbl.Name == scopeVersionLabel {
434+
if lbl.Name == prometheus.ScopeVersionLabelKey {
439435
scope.version = lbl.Value
440436
return
441437
}

0 commit comments

Comments
 (0)