-
Notifications
You must be signed in to change notification settings - Fork 10.2k
Closed
Description
Proposal
// ref: https://github.com/prometheus/prometheus/blob/main/scrape/target.go
func (t *Target) URL() *url.URL {
t.mtx.Lock()
configParams := t.scrapeConfig.Params
t.mtx.Unlock()
params := url.Values{}
for k, v := range configParams {
params[k] = make([]string, len(v))
copy(params[k], v)
}
t.labels.Range(func(l labels.Label) {
if !strings.HasPrefix(l.Name, model.ParamLabelPrefix) {
return
}
ks := l.Name[len(model.ParamLabelPrefix):]
if len(params[ks]) > 0 {
params[ks][0] = l.Value
} else {
params[ks] = []string{l.Value}
}
})
return &url.URL{
Scheme: t.labels.Get(model.SchemeLabel),
Host: t.labels.Get(model.AddressLabel),
Path: t.labels.Get(model.MetricsPathLabel),
RawQuery: params.Encode(),
}
}Why don't use:
t.mtx.RLock()
defer t.mtx.RUnlock()
configParams := t.scrapeConfig.ParamsReactions are currently unavailable