settings.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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: Internal metrics publisher Graphite initialized")
  33. settings.Publishers = append(settings.Publishers, graphitePublisher)
  34. }
  35. if influxPublisher, err := CreateInfluxPublisher(); err != nil {
  36. log.Error(3, "Metrics: Failed to init InfluxDB metric publisher", err)
  37. } else if influxPublisher != nil {
  38. log.Info("Metrics: Internal metrics publisher InfluxDB initialized")
  39. settings.Publishers = append(settings.Publishers, influxPublisher)
  40. }
  41. return settings
  42. }