pomerium/internal/telemetry/prometheus/relabel.go
2024-12-03 11:17:34 -05:00

36 lines
649 B
Go

package prometheus
import (
"iter"
dto "github.com/prometheus/client_model/go"
)
func AddLabels(
src iter.Seq2[*dto.MetricFamily, error],
addLabels map[string]string,
) iter.Seq2[*dto.MetricFamily, error] {
var extra []*dto.LabelPair
for k, v := range addLabels {
k, v := k, v
extra = append(extra, &dto.LabelPair{
Name: &k,
Value: &v,
})
}
return func(yield func(*dto.MetricFamily, error) bool) {
for mf, err := range src {
if err != nil {
yield(nil, err)
return
}
for _, metric := range mf.Metric {
metric.Label = append(metric.Label, extra...)
}
if !yield(mf, nil) {
return
}
}
}
}