stats.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. var stats m.SystemStats
  36. _, err := x.Sql(rawSql).Get(&stats)
  37. if err != nil {
  38. return err
  39. }
  40. query.Result = &stats
  41. return err
  42. }
  43. func GetAdminStats(query *m.GetAdminStatsQuery) error {
  44. var rawSql = `SELECT
  45. (
  46. SELECT COUNT(*)
  47. FROM ` + dialect.Quote("user") + `
  48. ) AS user_count,
  49. (
  50. SELECT COUNT(*)
  51. FROM ` + dialect.Quote("org") + `
  52. ) AS org_count,
  53. (
  54. SELECT COUNT(*)
  55. FROM ` + dialect.Quote("dashboard") + `
  56. ) AS dashboard_count,
  57. (
  58. SELECT COUNT(*)
  59. FROM ` + dialect.Quote("dashboard_snapshot") + `
  60. ) AS db_snapshot_count,
  61. (
  62. SELECT COUNT(*)
  63. FROM ` + dialect.Quote("dashboard_tag") + `
  64. ) AS db_tag_count,
  65. (
  66. SELECT COUNT(*)
  67. FROM ` + dialect.Quote("data_source") + `
  68. ) AS data_source_count,
  69. (
  70. SELECT COUNT(*)
  71. FROM ` + dialect.Quote("playlist") + `
  72. ) AS playlist_count,
  73. (
  74. SELECT COUNT (DISTINCT ` + dialect.Quote("dashboard_id") + ` )
  75. FROM ` + dialect.Quote("star") + `
  76. ) AS starred_db_count
  77. `
  78. var stats m.AdminStats
  79. _, err := x.Sql(rawSql).Get(&stats)
  80. if err != nil {
  81. return err
  82. }
  83. query.Result = &stats
  84. return err
  85. }