| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package usagestats
- import (
- "context"
- "time"
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/login/social"
- "github.com/grafana/grafana/pkg/services/sqlstore"
- "github.com/grafana/grafana/pkg/infra/log"
- "github.com/grafana/grafana/pkg/registry"
- "github.com/grafana/grafana/pkg/setting"
- )
- var metricsLogger log.Logger = log.New("metrics")
- func init() {
- registry.RegisterService(&UsageStatsService{})
- }
- type UsageStatsService struct {
- Cfg *setting.Cfg `inject:""`
- Bus bus.Bus `inject:""`
- SQLStore *sqlstore.SqlStore `inject:""`
- oauthProviders map[string]bool
- }
- func (uss *UsageStatsService) Init() error {
- uss.oauthProviders = social.GetOAuthProviders(uss.Cfg)
- return nil
- }
- func (uss *UsageStatsService) Run(ctx context.Context) error {
- uss.updateTotalStats()
- onceEveryDayTick := time.NewTicker(time.Hour * 24)
- everyMinuteTicker := time.NewTicker(time.Minute)
- defer onceEveryDayTick.Stop()
- defer everyMinuteTicker.Stop()
- for {
- select {
- case <-onceEveryDayTick.C:
- uss.sendUsageStats(uss.oauthProviders)
- case <-everyMinuteTicker.C:
- uss.updateTotalStats()
- case <-ctx.Done():
- return ctx.Err()
- }
- }
- }
|