From ea3ebcc6dd38d8b933bb4b60a73d6dc56010aa0e Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Fri, 21 Mar 2025 22:02:43 +0200 Subject: [PATCH] add config sanity checks for prometheus_agent --- config/configsanity.go | 3 +++ config/prometheus.go | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/config/configsanity.go b/config/configsanity.go index cabfdc7a6..2a4c59a89 100644 --- a/config/configsanity.go +++ b/config/configsanity.go @@ -1094,6 +1094,9 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> the CleanupInterval needs to be bigger than 0", utils.AnalyzerS) } } + if err := cfg.prometheusAgentCfg.validate(cfg); err != nil { + return err + } return nil } diff --git a/config/prometheus.go b/config/prometheus.go index a4d46dbb0..ebfa0f4fb 100644 --- a/config/prometheus.go +++ b/config/prometheus.go @@ -19,7 +19,9 @@ along with this program. If not, see package config import ( + "fmt" "slices" + "strings" "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/utils" @@ -113,6 +115,27 @@ func (c PrometheusAgentCfg) Clone() *PrometheusAgentCfg { } } +func (c PrometheusAgentCfg) validate(cfg *CGRConfig) error { + if !c.Enabled { + return nil + } + for _, connID := range c.StatSConns { + if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.statsCfg.Enabled { + return fmt.Errorf("<%s> not enabled but requested by <%s> component", utils.StatService, utils.PrometheusAgent) + } + if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) { + return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.PrometheusAgent, connID) + } + } + if len(c.CoreSConns) > 0 { + if c.CollectGoMetrics || c.CollectProcessMetrics { + return fmt.Errorf("<%s> collect_go_metrics and collect_process_metrics cannot be enabled when using CoreSConns", + utils.PrometheusAgent) + } + } + return nil +} + func diffPrometheusAgentJsonCfg(d *PrometheusAgentJsonCfg, v1, v2 *PrometheusAgentCfg) *PrometheusAgentJsonCfg { if d == nil { d = new(PrometheusAgentJsonCfg)