default_metrics.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package collector
  2. import (
  3. "errors"
  4. "strings"
  5. "github.com/BurntSushi/toml"
  6. "github.com/go-kit/log/level"
  7. )
  8. // 定义一个包含默认指标配置的常量字符串
  9. const defaultMetricsConst = `
  10. `
  11. // DefaultMetrics 是一种加载默认指标的实现方式(稍显临时的方式)
  12. func (e *Exporter) DefaultMetrics() Metrics {
  13. var metricsToScrape Metrics // 用于存储需要抓取的指标
  14. var err error
  15. // 如果配置中指定了默认指标文件
  16. if e.config.DefaultMetricsFile != "" {
  17. // 根据文件后缀选择解析方法
  18. if strings.HasSuffix(e.config.DefaultMetricsFile, "toml") {
  19. // 加载 TOML 格式的指标配置
  20. err = loadTomlMetricsConfig(e.config.DefaultMetricsFile, &metricsToScrape)
  21. }
  22. // 如果加载成功,返回加载的指标
  23. if err == nil {
  24. return metricsToScrape
  25. }
  26. // 如果加载失败,记录错误并警告将使用默认指标
  27. level.Error(e.logger).Log("没有找到默认指标文件 defaultMetricsFile", e.config.DefaultMetricsFile, "msg", err)
  28. //level.Warn(e.logger).Log("msg", "将使用默认指标继续运行")
  29. }
  30. // 如果没有指定文件或加载失败,则从常量中加载默认指标
  31. if _, err := toml.Decode(defaultMetricsConst, &metricsToScrape); err != nil {
  32. // 如果加载失败,记录错误并触发 panic
  33. level.Error(e.logger).Log("msg", err.Error())
  34. panic(errors.New("加载默认指标时发生错误:" + defaultMetricsConst))
  35. }
  36. // 返回加载的默认指标
  37. return metricsToScrape
  38. }