settings.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package metrics
  2. import "github.com/grafana/grafana/pkg/setting"
  3. type MetricPublisher interface {
  4. Publish(metrics []Metric)
  5. }
  6. type MetricSettings struct {
  7. Enabled bool
  8. IntervalSeconds int64
  9. Publishers []MetricPublisher
  10. }
  11. func readSettings() *MetricSettings {
  12. var settings = &MetricSettings{
  13. Enabled: false,
  14. Publishers: make([]MetricPublisher, 0),
  15. }
  16. var section, err = setting.Cfg.GetSection("metrics")
  17. if err != nil {
  18. metricsLogger.Crit("Unable to find metrics config section", "error", err)
  19. return nil
  20. }
  21. settings.Enabled = section.Key("enabled").MustBool(false)
  22. settings.IntervalSeconds = section.Key("interval_seconds").MustInt64(10)
  23. if !settings.Enabled {
  24. return settings
  25. }
  26. if graphitePublisher, err := CreateGraphitePublisher(); err != nil {
  27. metricsLogger.Error("Failed to init Graphite metric publisher", "error", err)
  28. } else if graphitePublisher != nil {
  29. metricsLogger.Info("Metrics publisher initialized", "type", "graphite")
  30. settings.Publishers = append(settings.Publishers, graphitePublisher)
  31. }
  32. return settings
  33. }