| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package sqlstore
- import (
- "time"
- "github.com/grafana/grafana/pkg/bus"
- m "github.com/grafana/grafana/pkg/models"
- )
- func init() {
- bus.AddHandler("sql", GetSystemStats)
- bus.AddHandler("sql", GetDataSourceStats)
- bus.AddHandler("sql", GetAdminStats)
- }
- var activeUserTimeLimit time.Duration = time.Hour * 24 * 30
- func GetDataSourceStats(query *m.GetDataSourceStatsQuery) error {
- var rawSql = `SELECT COUNT(*) as count, type FROM data_source GROUP BY type`
- query.Result = make([]*m.DataSourceStats, 0)
- err := x.SQL(rawSql).Find(&query.Result)
- return err
- }
- func GetSystemStats(query *m.GetSystemStatsQuery) error {
- var rawSql = `SELECT
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("user") + `
- ) AS users,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("org") + `
- ) AS orgs,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("dashboard") + `
- ) AS dashboards,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("data_source") + `
- ) AS datasources,
- (
- SELECT COUNT(*) FROM ` + dialect.Quote("star") + `
- ) AS stars,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("playlist") + `
- ) AS playlists,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("alert") + `
- ) AS alerts,
- (
- SELECT COUNT(*) FROM ` + dialect.Quote("user") + ` where last_seen_at > ?
- ) as active_users
- `
- activeUserDeadlineDate := time.Now().Add(-activeUserTimeLimit)
- var stats m.SystemStats
- _, err := x.SQL(rawSql, activeUserDeadlineDate).Get(&stats)
- if err != nil {
- return err
- }
- query.Result = &stats
- return err
- }
- func GetAdminStats(query *m.GetAdminStatsQuery) error {
- var rawSql = `SELECT
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("user") + `
- ) AS users,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("org") + `
- ) AS orgs,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("dashboard") + `
- ) AS dashboards,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("dashboard_snapshot") + `
- ) AS snapshots,
- (
- SELECT COUNT( DISTINCT ( ` + dialect.Quote("term") + ` ))
- FROM ` + dialect.Quote("dashboard_tag") + `
- ) AS tags,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("data_source") + `
- ) AS datasources,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("playlist") + `
- ) AS playlists,
- (
- SELECT COUNT(*) FROM ` + dialect.Quote("star") + `
- ) AS stars,
- (
- SELECT COUNT(*)
- FROM ` + dialect.Quote("alert") + `
- ) AS alerts,
- (
- SELECT COUNT(*)
- from ` + dialect.Quote("user") + ` where last_seen_at > ?
- ) as active_users
- `
- activeUserDeadlineDate := time.Now().Add(-activeUserTimeLimit)
- var stats m.AdminStats
- _, err := x.SQL(rawSql, activeUserDeadlineDate).Get(&stats)
- if err != nil {
- return err
- }
- query.Result = &stats
- return err
- }
|