settings.go 1.0 KB

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