stats.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package sqlstore
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. func init() {
  7. bus.AddHandler("sql", GetSystemStats)
  8. bus.AddHandler("sql", GetDataSourceStats)
  9. bus.AddHandler("sql", GetAdminStats)
  10. }
  11. func GetDataSourceStats(query *m.GetDataSourceStatsQuery) error {
  12. var rawSql = `SELECT COUNT(*) as count, type FROM data_source GROUP BY type`
  13. query.Result = make([]*m.DataSourceStats, 0)
  14. err := x.Sql(rawSql).Find(&query.Result)
  15. if err != nil {
  16. return err
  17. }
  18. return err
  19. }
  20. func GetSystemStats(query *m.GetSystemStatsQuery) error {
  21. var rawSql = `SELECT
  22. (
  23. SELECT COUNT(*)
  24. FROM ` + dialect.Quote("user") + `
  25. ) AS user_count,
  26. (
  27. SELECT COUNT(*)
  28. FROM ` + dialect.Quote("org") + `
  29. ) AS org_count,
  30. (
  31. SELECT COUNT(*)
  32. FROM ` + dialect.Quote("dashboard") + `
  33. ) AS dashboard_count,
  34. (
  35. SELECT COUNT(*)
  36. FROM ` + dialect.Quote("playlist") + `
  37. ) AS playlist_count,
  38. (
  39. SELECT COUNT(*)
  40. FROM ` + dialect.Quote("alert") + `
  41. ) AS alert_count
  42. `
  43. var stats m.SystemStats
  44. _, err := x.Sql(rawSql).Get(&stats)
  45. if err != nil {
  46. return err
  47. }
  48. query.Result = &stats
  49. return err
  50. }
  51. func GetAdminStats(query *m.GetAdminStatsQuery) error {
  52. var rawSql = `SELECT
  53. (
  54. SELECT COUNT(*)
  55. FROM ` + dialect.Quote("user") + `
  56. ) AS user_count,
  57. (
  58. SELECT COUNT(*)
  59. FROM ` + dialect.Quote("org") + `
  60. ) AS org_count,
  61. (
  62. SELECT COUNT(*)
  63. FROM ` + dialect.Quote("dashboard") + `
  64. ) AS dashboard_count,
  65. (
  66. SELECT COUNT(*)
  67. FROM ` + dialect.Quote("dashboard_snapshot") + `
  68. ) AS db_snapshot_count,
  69. (
  70. SELECT COUNT( DISTINCT ( ` + dialect.Quote("term") + ` ))
  71. FROM ` + dialect.Quote("dashboard_tag") + `
  72. ) AS db_tag_count,
  73. (
  74. SELECT COUNT(*)
  75. FROM ` + dialect.Quote("data_source") + `
  76. ) AS data_source_count,
  77. (
  78. SELECT COUNT(*)
  79. FROM ` + dialect.Quote("playlist") + `
  80. ) AS playlist_count,
  81. (
  82. SELECT COUNT(DISTINCT ` + dialect.Quote("dashboard_id") + ` )
  83. FROM ` + dialect.Quote("star") + `
  84. ) AS starred_db_count,
  85. (
  86. SELECT COUNT(*)
  87. FROM ` + dialect.Quote("alert") + `
  88. ) AS alert_count
  89. `
  90. var stats m.AdminStats
  91. _, err := x.Sql(rawSql).Get(&stats)
  92. if err != nil {
  93. return err
  94. }
  95. query.Result = &stats
  96. return err
  97. }