From 09500121f86f8d2e0bbef7400b572735a7a77b72 Mon Sep 17 00:00:00 2001 From: Thomas Jackson Date: Tue, 9 Feb 2021 08:15:18 -0800 Subject: [PATCH] Add reload metrics from upstream --- cmd/promxy/main.go | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/cmd/promxy/main.go b/cmd/promxy/main.go index c42c1efba..8097c82d7 100644 --- a/cmd/promxy/main.go +++ b/cmd/promxy/main.go @@ -29,6 +29,7 @@ import ( "github.com/jessevdk/go-flags" "github.com/julienschmidt/httprouter" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/common/log" "github.com/prometheus/common/model" @@ -54,7 +55,16 @@ import ( ) var ( - reloadTime = prometheus.NewGauge(prometheus.GaugeOpts{ + configSuccess = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "prometheus_config_last_reload_successful", + Help: "Whether the last configuration reload attempt was successful.", + }) + configSuccessTime = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "prometheus_config_last_reload_success_timestamp_seconds", + Help: "Timestamp of the last successful configuration reload.", + }) + + reloadTime = promauto.NewGauge(prometheus.GaugeOpts{ Name: "process_reload_time_seconds", Help: "Last reload (SIGHUP) time of the process since unix epoch in seconds.", }) @@ -106,7 +116,16 @@ func (c *cliOpts) ToFlags() map[string]string { var opts cliOpts -func reloadConfig(noStepSuqueryInterval *safePromQLNoStepSubqueryInterval, rls ...proxyconfig.Reloadable) error { +func reloadConfig(noStepSuqueryInterval *safePromQLNoStepSubqueryInterval, rls ...proxyconfig.Reloadable) (err error) { + defer func() { + if err == nil { + configSuccess.Set(1) + configSuccessTime.SetToCurrentTime() + } else { + configSuccess.Set(0) + } + }() + cfg, err := proxyconfig.ConfigFromFile(opts.ConfigFile) if err != nil { return fmt.Errorf("error loading cfg: %v", err) @@ -136,8 +155,6 @@ func main() { defer close(sigs) signal.Notify(sigs, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGINT) - prometheus.MustRegister(reloadTime) - reloadables := make([]proxyconfig.Reloadable, 0) parser := flags.NewParser(&opts, flags.Default) @@ -389,6 +406,9 @@ func main() { logrus.Fatalf("Error loading config: %s", err) } + configSuccess.Set(1) + configSuccessTime.SetToCurrentTime() + close(reloadReady) // Set up access logger