lib/promscrape: stop dropping metric name if relabeling rules do not instruct to do this on the /metric-relabel-debug page

This commit is contained in:
Aliaksandr Valialkin 2022-12-16 16:43:34 -08:00
parent 9b82eebc3e
commit 2e597555ec
No known key found for this signature in database
GPG Key ID: A72BEC6CD3D0DED1
2 changed files with 35 additions and 20 deletions

View File

@ -16,6 +16,7 @@ The following tip changes can be tested by building VictoriaMetrics components f
## tip ## tip
* BUGFIX: allow specifying values bigger than 2GiB to the following command-line flag values on 32-bit architectures (`386` and `arm`): `-storage.minFreeDiskSpaceBytes` and `-remoteWrite.maxDiskUsagePerURL`. Previously values bigger than 2GiB were incorrectly truncated on these architectures. * BUGFIX: allow specifying values bigger than 2GiB to the following command-line flag values on 32-bit architectures (`386` and `arm`): `-storage.minFreeDiskSpaceBytes` and `-remoteWrite.maxDiskUsagePerURL`. Previously values bigger than 2GiB were incorrectly truncated on these architectures.
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): stop dropping metric name by a mistake on the [/metric-relabel-debug](https://docs.victoriametrics.com/vmagent.html#relabel-debug) page.
## [v1.85.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.85.1) ## [v1.85.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.85.1)

View File

@ -90,31 +90,45 @@ func newDebugRelabelSteps(pcs *promrelabel.ParsedConfigs, labels *promutils.Labe
labels.Labels = labelsResult labels.Labels = labelsResult
outStr := promrelabel.LabelsToString(labels.GetLabels()) outStr := promrelabel.LabelsToString(labels.GetLabels())
// Add missing instance label if isTargetRelabel {
if isTargetRelabel && labels.Get("instance") == "" { // Add missing instance label
address := labels.Get("__address__") if labels.Get("instance") == "" {
if address != "" { address := labels.Get("__address__")
inStr := outStr if address != "" {
labels.Add("instance", address) inStr := outStr
outStr = promrelabel.LabelsToString(labels.GetLabels()) labels.Add("instance", address)
outStr = promrelabel.LabelsToString(labels.GetLabels())
dss = append(dss, promrelabel.DebugStep{
Rule: "add missing instance label from __address__ label",
In: inStr,
Out: outStr,
})
}
}
// Remove labels with __ prefix
inStr := outStr
labels.RemoveLabelsWithDoubleUnderscorePrefix()
outStr = promrelabel.LabelsToString(labels.GetLabels())
if inStr != outStr {
dss = append(dss, promrelabel.DebugStep{ dss = append(dss, promrelabel.DebugStep{
Rule: "add missing instance label from __address__ label", Rule: "remove labels with __ prefix",
In: inStr,
Out: outStr,
})
}
} else {
// Remove labels with __ prefix except of __name__
inStr := outStr
labels.Labels = promrelabel.FinalizeLabels(labels.Labels[:0], labels.Labels)
outStr = promrelabel.LabelsToString(labels.GetLabels())
if inStr != outStr {
dss = append(dss, promrelabel.DebugStep{
Rule: "remove labels with __ prefix except of __name__",
In: inStr, In: inStr,
Out: outStr, Out: outStr,
}) })
} }
}
// Remove labels with __ prefix
inStr := outStr
labels.RemoveLabelsWithDoubleUnderscorePrefix()
outStr = promrelabel.LabelsToString(labels.GetLabels())
if inStr != outStr {
dss = append(dss, promrelabel.DebugStep{
Rule: "remove labels with __ prefix",
In: inStr,
Out: outStr,
})
} }
// There is no need in labels' sorting, since promrelabel.LabelsToString() automatically sorts labels. // There is no need in labels' sorting, since promrelabel.LabelsToString() automatically sorts labels.