package collector import ( "errors" "strings" "github.com/BurntSushi/toml" "github.com/go-kit/log/level" ) // 定义一个包含默认指标配置的常量字符串 const defaultMetricsConst = ` ` // DefaultMetrics 是一种加载默认指标的实现方式(稍显临时的方式) func (e *Exporter) DefaultMetrics() Metrics { var metricsToScrape Metrics // 用于存储需要抓取的指标 var err error // 如果配置中指定了默认指标文件 if e.config.DefaultMetricsFile != "" { // 根据文件后缀选择解析方法 if strings.HasSuffix(e.config.DefaultMetricsFile, "toml") { // 加载 TOML 格式的指标配置 err = loadTomlMetricsConfig(e.config.DefaultMetricsFile, &metricsToScrape) } // 如果加载成功,返回加载的指标 if err == nil { return metricsToScrape } // 如果加载失败,记录错误并警告将使用默认指标 level.Error(e.logger).Log("没有找到默认指标文件 defaultMetricsFile", e.config.DefaultMetricsFile, "msg", err) //level.Warn(e.logger).Log("msg", "将使用默认指标继续运行") } // 如果没有指定文件或加载失败,则从常量中加载默认指标 if _, err := toml.Decode(defaultMetricsConst, &metricsToScrape); err != nil { // 如果加载失败,记录错误并触发 panic level.Error(e.logger).Log("msg", err.Error()) panic(errors.New("加载默认指标时发生错误:" + defaultMetricsConst)) } // 返回加载的默认指标 return metricsToScrape }