From c8f45e2e0e601b4ba0b4a4c9b2d0eb2714a052b3 Mon Sep 17 00:00:00 2001 From: destinyoooo <643604012@qq.com> Date: Thu, 26 Mar 2026 15:08:06 +0800 Subject: [PATCH] fix: Add parameter validation for config --- config/config.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/config/config.go b/config/config.go index 3154c540..ea84970a 100644 --- a/config/config.go +++ b/config/config.go @@ -146,6 +146,35 @@ func (c *Config) checkRequiredFields() error { if (len(c.Jobs) == 0) == (c.Target == nil) { return fmt.Errorf("exactly one of `jobs` and `target` must be defined") } + + // Check target configuration + if c.Target != nil { + if c.Target.DSN == "" { + return fmt.Errorf("target.data_source_name is required") + } + if len(c.Target.CollectorRefs) == 0 { + return fmt.Errorf("target.collectors is required") + } + } + + // Check jobs configuration + for i, job := range c.Jobs { + if job.Name == "" { + return fmt.Errorf("job[%d].job_name is required", i) + } + if len(job.CollectorRefs) == 0 { + return fmt.Errorf("job[%d].collectors is required", i) + } + if len(job.StaticConfigs) == 0 { + return fmt.Errorf("job[%d].static_configs is required", i) + } + for j, staticConfig := range job.StaticConfigs { + if len(staticConfig.Targets) == 0 { + return fmt.Errorf("job[%d].static_configs[%d].targets is required", i, j) + } + } + } + return nil }