From 5449af70af51db980ecc4575b579fceb7f8c8a69 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Thu, 23 Oct 2025 09:43:07 +0200 Subject: [PATCH 1/3] Revert "UI: fix redirect when web.routePrefix configured" This reverts commit 93887a9b82a71613067ff0706248c18fe131c5b0. See discussion at https://github.com/prometheus/prometheus/pull/17240 - I had thought this was a simple and clear bugfix, but multiple people were depending on the previous behavior already, and we want to err on the side of stability. Signed-off-by: Julius Volz --- web/web.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/web.go b/web/web.go index 22a0098878..80aa845883 100644 --- a/web/web.go +++ b/web/web.go @@ -417,12 +417,12 @@ func New(logger *slog.Logger, o *Options) *Handler { readyf := h.testReady router.Get("/", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, path.Join(o.RoutePrefix, homePage), http.StatusFound) + http.Redirect(w, r, path.Join(o.ExternalURL.Path, homePage), http.StatusFound) }) if !o.UseOldUI { router.Get("/graph", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, path.Join(o.RoutePrefix, "/query?"+r.URL.RawQuery), http.StatusFound) + http.Redirect(w, r, path.Join(o.ExternalURL.Path, "/query?"+r.URL.RawQuery), http.StatusFound) }) } From 436ae330ffba921564593fed8133b8056b234153 Mon Sep 17 00:00:00 2001 From: George Krajcsovits Date: Tue, 28 Oct 2025 12:06:32 +0100 Subject: [PATCH 2/3] fix(deps): update prometheus/common to 0.67.1 (#17409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #17405 federation of NHCB histograms Manual backport of #17299 Signed-off-by: György Krajcsovits --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 02ec483ff7..ca599fa613 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( github.com/prometheus/alertmanager v0.28.1 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.66.1 + github.com/prometheus/common v0.67.1 github.com/prometheus/common/assets v0.2.0 github.com/prometheus/exporter-toolkit v0.14.1 github.com/prometheus/sigv4 v0.2.1 @@ -91,7 +91,7 @@ require ( google.golang.org/api v0.250.0 google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.34.1 k8s.io/apimachinery v0.34.1 diff --git a/go.sum b/go.sum index 8a7d514b5f..279deec119 100644 --- a/go.sum +++ b/go.sum @@ -443,8 +443,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= @@ -690,8 +690,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 92ccadc96da1c931b36fae6e1ee4ee97dac69aee Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Tue, 28 Oct 2025 14:34:52 +0100 Subject: [PATCH 3/3] promtool: generate rulesLintConfig when `--lint=none` is set (#17414) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Correctly generate rulesLintConfig when --lint=none is set (#17399) If I run promtool check config --lint=none I get: ``` Checking rules.yml FAILED: rules.yml: unset nameValidationScheme ``` This is because passing --lint=none stops newConfigLintConfig from generating rulesLintConfig which is needed for validation. It means that defaults are used then, one of which is unset value for metric name validation, causing this error. Fix this by handling --lint=none case correctly and still generating rulesLintConfig. --------- Signed-off-by: Lukasz Mierzwa Signed-off-by: Arve Knudsen Co-authored-by: Łukasz Mierzwa --- cmd/promtool/main.go | 10 +++++----- ...prometheus-config.lint.too_long_scrape_interval.yml | 2 ++ cmd/promtool/testdata/prometheus-config.rules.good.yml | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 cmd/promtool/testdata/prometheus-config.rules.good.yml diff --git a/cmd/promtool/main.go b/cmd/promtool/main.go index 6357e55cc1..0c64b19736 100644 --- a/cmd/promtool/main.go +++ b/cmd/promtool/main.go @@ -476,13 +476,15 @@ type rulesLintConfig struct { } func newRulesLintConfig(stringVal string, fatal, ignoreUnknownFields bool, nameValidationScheme model.ValidationScheme) rulesLintConfig { - items := strings.Split(stringVal, ",") ls := rulesLintConfig{ fatal: fatal, ignoreUnknownFields: ignoreUnknownFields, nameValidationScheme: nameValidationScheme, } - for _, setting := range items { + if stringVal == "" { + return ls + } + for _, setting := range strings.Split(stringVal, ",") { switch setting { case lintOptionAll: ls.all = true @@ -534,9 +536,7 @@ func newConfigLintConfig(optionsStr string, fatal, ignoreUnknownFields bool, nam rulesOptions = nil } - if len(rulesOptions) > 0 { - c.rulesLintConfig = newRulesLintConfig(strings.Join(rulesOptions, ","), fatal, ignoreUnknownFields, nameValidationScheme) - } + c.rulesLintConfig = newRulesLintConfig(strings.Join(rulesOptions, ","), fatal, ignoreUnknownFields, nameValidationScheme) return c } diff --git a/cmd/promtool/testdata/prometheus-config.lint.too_long_scrape_interval.yml b/cmd/promtool/testdata/prometheus-config.lint.too_long_scrape_interval.yml index 0c85d13f31..fe21d21707 100644 --- a/cmd/promtool/testdata/prometheus-config.lint.too_long_scrape_interval.yml +++ b/cmd/promtool/testdata/prometheus-config.lint.too_long_scrape_interval.yml @@ -1,3 +1,5 @@ scrape_configs: - job_name: too_long_scrape_interval_test scrape_interval: 10m +rule_files: + - prometheus-config.rules.good.yml diff --git a/cmd/promtool/testdata/prometheus-config.rules.good.yml b/cmd/promtool/testdata/prometheus-config.rules.good.yml new file mode 100644 index 0000000000..4529a3ec86 --- /dev/null +++ b/cmd/promtool/testdata/prometheus-config.rules.good.yml @@ -0,0 +1,3 @@ +groups: + - name: rules + rules: []