Skip to content

Commit aa012eb

Browse files
authored
Fix Prometheus label handling in prep for 0.307.0 upgrade (#4496)
1 parent c486ef8 commit aa012eb

File tree

11 files changed

+94
-139
lines changed

11 files changed

+94
-139
lines changed

cmd/otel-allocator/internal/allocation/allocator_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,8 @@ func TestAllocationCollision(t *testing.T) {
165165

166166
cols := MakeNCollectors(3, 0)
167167
allocator.SetCollectors(cols)
168-
firstLabels := labels.Labels{
169-
{Name: "test", Value: "test1"},
170-
}
171-
secondLabels := labels.Labels{
172-
{Name: "test", Value: "test2"},
173-
}
168+
firstLabels := labels.New(labels.Label{Name: "test", Value: "test1"})
169+
secondLabels := labels.New(labels.Label{Name: "test", Value: "test2"})
174170
firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "")
175171
secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "")
176172

cmd/otel-allocator/internal/allocation/per_node_test.go

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,22 @@ func TestAllocationPerNode(t *testing.T) {
3232

3333
cols := MakeNCollectors(4, 0)
3434
s.SetCollectors(cols)
35-
firstLabels := labels.Labels{
36-
{Name: "test", Value: "test1"},
37-
{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
38-
}
39-
secondLabels := labels.Labels{
40-
{Name: "test", Value: "test2"},
41-
{Name: "__meta_kubernetes_node_name", Value: "node-1"},
42-
}
35+
firstLabels := labels.New(
36+
labels.Label{Name: "test", Value: "test1"},
37+
labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
38+
)
39+
secondLabels := labels.New(
40+
labels.Label{Name: "test", Value: "test2"},
41+
labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-1"},
42+
)
4343
// no label, should be skipped
44-
thirdLabels := labels.Labels{
45-
{Name: "test", Value: "test3"},
46-
}
44+
thirdLabels := labels.New(labels.Label{Name: "test", Value: "test3"})
4745
// endpointslice target kind and name
48-
fourthLabels := labels.Labels{
49-
{Name: "test", Value: "test4"},
50-
{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"},
51-
{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"},
52-
}
46+
fourthLabels := labels.New(
47+
labels.Label{Name: "test", Value: "test4"},
48+
labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"},
49+
labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"},
50+
)
5351

5452
firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "")
5553
secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "")
@@ -99,24 +97,22 @@ func TestAllocationPerNodeUsingFallback(t *testing.T) {
9997

10098
cols := MakeNCollectors(4, 0)
10199
s.SetCollectors(cols)
102-
firstLabels := labels.Labels{
103-
{Name: "test", Value: "test1"},
104-
{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
105-
}
106-
secondLabels := labels.Labels{
107-
{Name: "test", Value: "test2"},
108-
{Name: "__meta_kubernetes_node_name", Value: "node-1"},
109-
}
100+
firstLabels := labels.New(
101+
labels.Label{Name: "test", Value: "test1"},
102+
labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
103+
)
104+
secondLabels := labels.New(
105+
labels.Label{Name: "test", Value: "test2"},
106+
labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-1"},
107+
)
110108
// no label, should be allocated by the fallback strategy
111-
thirdLabels := labels.Labels{
112-
{Name: "test", Value: "test3"},
113-
}
109+
thirdLabels := labels.New(labels.Label{Name: "test", Value: "test3"})
114110
// endpointslice target kind and name
115-
fourthLabels := labels.Labels{
116-
{Name: "test", Value: "test4"},
117-
{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"},
118-
{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"},
119-
}
111+
fourthLabels := labels.New(
112+
labels.Label{Name: "test", Value: "test4"},
113+
labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"},
114+
labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"},
115+
)
120116

121117
firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "")
122118
secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "")

cmd/otel-allocator/internal/allocation/testutils.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ func MakeNNewTargets(n int, numCollectors int, startingIndex int) []*target.Item
2828
toReturn := []*target.Item{}
2929
for i := startingIndex; i < n+startingIndex; i++ {
3030
collector := fmt.Sprintf("collector-%d", colIndex(i, numCollectors))
31-
label := labels.Labels{
32-
{Name: "i", Value: strconv.Itoa(i)},
33-
{Name: "total", Value: strconv.Itoa(n + startingIndex)},
34-
}
31+
label := labels.New(
32+
labels.Label{Name: "i", Value: strconv.Itoa(i)},
33+
labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)},
34+
)
3535
newTarget := target.NewItem(fmt.Sprintf("test-job-%d", i), fmt.Sprintf("test-url-%d", i), label, collector)
3636
toReturn = append(toReturn, newTarget)
3737
}
@@ -54,11 +54,11 @@ func MakeNCollectors(n int, startingIndex int) map[string]*Collector {
5454
func MakeNNewTargetsWithEmptyCollectors(n int, startingIndex int) []*target.Item {
5555
toReturn := []*target.Item{}
5656
for i := startingIndex; i < n+startingIndex; i++ {
57-
label := labels.Labels{
58-
{Name: "i", Value: strconv.Itoa(i)},
59-
{Name: "total", Value: strconv.Itoa(n + startingIndex)},
60-
{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
61-
}
57+
label := labels.New(
58+
labels.Label{Name: "i", Value: strconv.Itoa(i)},
59+
labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)},
60+
labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"},
61+
)
6262
newTarget := target.NewItem(fmt.Sprintf("test-job-%d", i), fmt.Sprintf("test-url-%d", i), label, "")
6363
toReturn = append(toReturn, newTarget)
6464
}

cmd/otel-allocator/internal/prehook/relabel_test.go

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,12 @@ func makeNNewTargets(rCfgs []relabelConfigObj, n int, numCollectors int, startin
186186
for i := startingIndex; i < n+startingIndex; i++ {
187187
collector := fmt.Sprintf("collector-%d", colIndex(i, numCollectors))
188188
jobName := fmt.Sprintf("test-job-%d", i)
189-
label := labels.Labels{
190-
{Name: "collector", Value: collector},
191-
{Name: "i", Value: strconv.Itoa(i)},
192-
{Name: "total", Value: strconv.Itoa(n + startingIndex)},
193-
{Name: model.MetaLabelPrefix + strconv.Itoa(i), Value: strconv.Itoa(i)},
194-
{Name: model.AddressLabel, Value: "address_value"},
189+
label := labels.New(
190+
labels.Label{Name: "collector", Value: collector},
191+
labels.Label{Name: "i", Value: strconv.Itoa(i)},
192+
labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)},
193+
labels.Label{Name: model.MetaLabelPrefix + strconv.Itoa(i), Value: strconv.Itoa(i)},
194+
labels.Label{Name: model.AddressLabel, Value: "address_value"},
195195
// These labels are typically required for correct scraping behavior and are expected to be retained after relabeling.:
196196
// - job
197197
// - __scrape_interval__
@@ -201,15 +201,15 @@ func makeNNewTargets(rCfgs []relabelConfigObj, n int, numCollectors int, startin
201201
// Prometheus adds these labels by default. Removing them via relabel_configs is considered invalid and is therefore ignored.
202202
// For details, see:
203203
// https://github.com/prometheus/prometheus/blob/e6cfa720fbe6280153fab13090a483dbd40bece3/scrape/target.go#L429
204-
{Name: model.JobLabel, Value: jobName},
205-
{Name: model.ScrapeIntervalLabel, Value: "10s"},
206-
{Name: model.ScrapeTimeoutLabel, Value: "10s"},
207-
{Name: model.SchemeLabel, Value: "http"},
208-
{Name: model.MetricsPathLabel, Value: "/metrics" + strconv.Itoa(i)},
204+
labels.Label{Name: model.JobLabel, Value: jobName},
205+
labels.Label{Name: model.ScrapeIntervalLabel, Value: "10s"},
206+
labels.Label{Name: model.ScrapeTimeoutLabel, Value: "10s"},
207+
labels.Label{Name: model.SchemeLabel, Value: "http"},
208+
labels.Label{Name: model.MetricsPathLabel, Value: "/metrics" + strconv.Itoa(i)},
209209

210210
// Prometheus will automatically add the "instance" label if it is not present.
211-
{Name: model.InstanceLabel, Value: "address_value"},
212-
}
211+
labels.Label{Name: model.InstanceLabel, Value: "address_value"},
212+
)
213213
rawTarget := target.NewItem(jobName, "test-url", label, collector)
214214

215215
// add a single replace, drop, or keep action as relabel_config for targets
@@ -309,11 +309,9 @@ func TestDistinctTarget(t *testing.T) {
309309

310310
duplicatedTargets := make([]*target.Item, 0, 2*len(targets))
311311
for _, item := range targets {
312-
ls := item.Labels.Copy()
313-
ls = append(ls, labels.Label{
314-
Name: checkDistinctConfigLabel,
315-
Value: "check-distinct-label-value",
316-
})
312+
builder := labels.NewBuilder(item.Labels)
313+
builder.Set(checkDistinctConfigLabel, "check-distinct-label-value")
314+
ls := builder.Labels()
317315

318316
duplItem := target.NewItem(item.JobName, item.TargetURL, ls, item.CollectorName)
319317
duplicatedTargets = append(duplicatedTargets, duplItem)

cmd/otel-allocator/internal/server/server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,9 +426,9 @@ func (s *Server) TargetHTMLHandler(c *gin.Context) {
426426
Headers: []string{"Label", "Value"},
427427
Rows: func() [][]Cell {
428428
var rows [][]Cell
429-
for _, l := range target.Labels {
429+
target.Labels.Range(func(l labels.Label) {
430430
rows = append(rows, []Cell{NewCell(l.Name), NewCell(l.Value)})
431-
}
431+
})
432432
return rows
433433
}(),
434434
})

cmd/otel-allocator/internal/server/server_test.go

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,9 @@ import (
3131
)
3232

3333
var (
34-
logger = logf.Log.WithName("server-unit-tests")
35-
baseLabelSet = labels.Labels{
36-
{Name: "test_label", Value: "test-value"},
37-
}
38-
testJobLabelSetTwo = labels.Labels{
39-
{Name: "test_label", Value: "test-value2"},
40-
}
34+
logger = logf.Log.WithName("server-unit-tests")
35+
baseLabelSet = labels.New(labels.Label{Name: "test_label", Value: "test-value"})
36+
testJobLabelSetTwo = labels.New(labels.Label{Name: "test_label", Value: "test-value2"})
4137
baseTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector")
4238
secondTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector")
4339
testJobTargetItemTwo = target.NewItem("test-job", "test-url2", testJobLabelSetTwo, "test-collector2")
@@ -101,9 +97,7 @@ func TestServer_TargetsHandler(t *testing.T) {
10197
items: []*targetJSON{
10298
{
10399
TargetURL: []string{"test-url"},
104-
Labels: labels.Labels{
105-
{Name: "test_label", Value: "test-value"},
106-
},
100+
Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}),
107101
},
108102
},
109103
},
@@ -123,9 +117,7 @@ func TestServer_TargetsHandler(t *testing.T) {
123117
items: []*targetJSON{
124118
{
125119
TargetURL: []string{"test-url"},
126-
Labels: labels.Labels{
127-
{Name: "test_label", Value: "test-value"},
128-
},
120+
Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}),
129121
},
130122
},
131123
},
@@ -145,15 +137,11 @@ func TestServer_TargetsHandler(t *testing.T) {
145137
items: []*targetJSON{
146138
{
147139
TargetURL: []string{"test-url"},
148-
Labels: labels.Labels{
149-
{Name: "test_label", Value: "test-value"},
150-
},
140+
Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}),
151141
},
152142
{
153143
TargetURL: []string{"test-url2"},
154-
Labels: labels.Labels{
155-
{Name: "test_label", Value: "test-value2"},
156-
},
144+
Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value2"}),
157145
},
158146
},
159147
},
@@ -568,7 +556,7 @@ func TestServer_JobHandler(t *testing.T) {
568556
{
569557
description: "one job",
570558
targetItems: map[target.ItemHash]*target.Item{
571-
0: target.NewItem("job1", "", labels.Labels{}, ""),
559+
0: target.NewItem("job1", "", labels.New(), ""),
572560
},
573561
expectedCode: http.StatusOK,
574562
expectedJobs: map[string]linkJSON{
@@ -578,11 +566,11 @@ func TestServer_JobHandler(t *testing.T) {
578566
{
579567
description: "multiple jobs",
580568
targetItems: map[target.ItemHash]*target.Item{
581-
0: target.NewItem("job1", "", labels.Labels{}, ""),
582-
1: target.NewItem("job2", "", labels.Labels{}, ""),
583-
2: target.NewItem("job3", "", labels.Labels{}, ""),
584-
3: target.NewItem("job3", "", labels.Labels{}, ""),
585-
4: target.NewItem("job3", "", labels.Labels{}, "")},
569+
0: target.NewItem("job1", "", labels.New(), ""),
570+
1: target.NewItem("job2", "", labels.New(), ""),
571+
2: target.NewItem("job3", "", labels.New(), ""),
572+
3: target.NewItem("job3", "", labels.New(), ""),
573+
4: target.NewItem("job3", "", labels.New(), "")},
586574
expectedCode: http.StatusOK,
587575
expectedJobs: map[string]linkJSON{
588576
"job1": newLink("job1"),
@@ -635,19 +623,19 @@ func TestServer_JobsHandler_HTML(t *testing.T) {
635623
{
636624
description: "one job",
637625
targetItems: map[target.ItemHash]*target.Item{
638-
0: target.NewItem("job1", "", labels.Labels{}, ""),
626+
0: target.NewItem("job1", "", labels.New(), ""),
639627
},
640628
expectedCode: http.StatusOK,
641629
Golden: "jobs_one.html",
642630
},
643631
{
644632
description: "multiple jobs",
645633
targetItems: map[target.ItemHash]*target.Item{
646-
0: target.NewItem("job1", "1.1.1.1:8080", labels.Labels{}, ""),
647-
1: target.NewItem("job2", "1.1.1.2:8080", labels.Labels{}, ""),
648-
2: target.NewItem("job3", "1.1.1.3:8080", labels.Labels{}, ""),
649-
3: target.NewItem("job3", "1.1.1.4:8080", labels.Labels{}, ""),
650-
4: target.NewItem("job3", "1.1.1.5:8080", labels.Labels{}, "")},
634+
0: target.NewItem("job1", "1.1.1.1:8080", labels.New(), ""),
635+
1: target.NewItem("job2", "1.1.1.2:8080", labels.New(), ""),
636+
2: target.NewItem("job3", "1.1.1.3:8080", labels.New(), ""),
637+
3: target.NewItem("job3", "1.1.1.4:8080", labels.New(), ""),
638+
4: target.NewItem("job3", "1.1.1.5:8080", labels.New(), "")},
651639
expectedCode: http.StatusOK,
652640
Golden: "jobs_multiple.html",
653641
},

cmd/otel-allocator/internal/server/testdata/collector_multiple.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ <h1>Collector: test-collector2</h1>
3131
<a href="/debug/job?job_id=test-job">test-job</a>
3232
</td>
3333
<td style="vertical-align: top;">
34-
<a href="/debug/target?target_hash=6737493032997278979">test-url</a>
34+
<a href="/debug/target?target_hash=5512283283146621186">test-url</a>
3535
</td>
3636
<td style="vertical-align: top;">
3737

cmd/otel-allocator/internal/server/testdata/collector_single.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ <h1>Collector: test-collector2</h1>
3131
<a href="/debug/job?job_id=test-job">test-job</a>
3232
</td>
3333
<td style="vertical-align: top;">
34-
<a href="/debug/target?target_hash=6737493032997278979">test-url</a>
34+
<a href="/debug/target?target_hash=5512283283146621186">test-url</a>
3535
</td>
3636
<td style="vertical-align: top;">
3737

cmd/otel-allocator/internal/server/testdata/targets_multiple.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ <h1>OpenTelemetry Target Allocator - Targets</h1>
3131
</thead>
3232
<tr style="background: #eee">
3333
<td style="vertical-align: top;">
34-
<a href="/debug/job?job_id=test-job2">test-job2</a>
34+
<a href="/debug/job?job_id=test-job">test-job</a>
3535
</td>
3636
<td style="vertical-align: top;">
37-
<a href="/debug/target?target_hash=3238214178413060520">test-url3</a>
37+
<a href="/debug/target?target_hash=5512283283146621186">test-url</a>
3838
</td>
3939
<td style="vertical-align: top;">
4040
<a href="/debug/collector?collector_id=test-collector1">test-collector1</a>
@@ -48,24 +48,24 @@ <h1>OpenTelemetry Target Allocator - Targets</h1>
4848
<a href="/debug/job?job_id=test-job">test-job</a>
4949
</td>
5050
<td style="vertical-align: top;">
51-
<a href="/debug/target?target_hash=6737493032997278979">test-url</a>
51+
<a href="/debug/target?target_hash=7939255050499047193">test-url2</a>
5252
</td>
5353
<td style="vertical-align: top;">
54-
<a href="/debug/collector?collector_id=test-collector1">test-collector1</a>
54+
<a href="/debug/collector?collector_id=test-collector2">test-collector2</a>
5555
</td>
5656
<td style="vertical-align: top;">
5757

5858
</td>
5959
</tr>
6060
<tr style="background: #eee">
6161
<td style="vertical-align: top;">
62-
<a href="/debug/job?job_id=test-job">test-job</a>
62+
<a href="/debug/job?job_id=test-job2">test-job2</a>
6363
</td>
6464
<td style="vertical-align: top;">
65-
<a href="/debug/target?target_hash=12162887098722716261">test-url2</a>
65+
<a href="/debug/target?target_hash=13712592240399323632">test-url3</a>
6666
</td>
6767
<td style="vertical-align: top;">
68-
<a href="/debug/collector?collector_id=test-collector2">test-collector2</a>
68+
<a href="/debug/collector?collector_id=test-collector1">test-collector1</a>
6969
</td>
7070
<td style="vertical-align: top;">
7171

cmd/otel-allocator/internal/server/testdata/targets_single.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ <h1>OpenTelemetry Target Allocator - Targets</h1>
3434
<a href="/debug/job?job_id=test-job">test-job</a>
3535
</td>
3636
<td style="vertical-align: top;">
37-
<a href="/debug/target?target_hash=6737493032997278979">test-url</a>
37+
<a href="/debug/target?target_hash=5512283283146621186">test-url</a>
3838
</td>
3939
<td style="vertical-align: top;">
4040
<a href="/debug/collector?collector_id=test-collector1">test-collector1</a>

0 commit comments

Comments
 (0)