diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f5f5e399b0..4f0a51c129 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -16,6 +16,7 @@ The following tip changes can be tested by building VictoriaMetrics components f ## 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: [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) diff --git a/lib/promscrape/relabel_debug.go b/lib/promscrape/relabel_debug.go index dda6739079..06b6805e43 100644 --- a/lib/promscrape/relabel_debug.go +++ b/lib/promscrape/relabel_debug.go @@ -90,31 +90,45 @@ func newDebugRelabelSteps(pcs *promrelabel.ParsedConfigs, labels *promutils.Labe labels.Labels = labelsResult outStr := promrelabel.LabelsToString(labels.GetLabels()) - // Add missing instance label - if isTargetRelabel && labels.Get("instance") == "" { - address := labels.Get("__address__") - if address != "" { - inStr := outStr - labels.Add("instance", address) - outStr = promrelabel.LabelsToString(labels.GetLabels()) + if isTargetRelabel { + // Add missing instance label + if labels.Get("instance") == "" { + address := labels.Get("__address__") + if address != "" { + inStr := outStr + 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{ - 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, 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.