mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Fix grafana live stats reset when sending usage stats (#39558)
This commit is contained in:
parent
65d79d9a30
commit
b9acdce837
@ -113,6 +113,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
|
||||||
|
|
||||||
func newTestLive(t *testing.T) *live.GrafanaLive {
|
func newTestLive(t *testing.T) *live.GrafanaLive {
|
||||||
cfg := &setting.Cfg{AppURL: "http://localhost:3000/"}
|
cfg := &setting.Cfg{AppURL: "http://localhost:3000/"}
|
||||||
gLive, err := live.ProvideService(nil, cfg, routing.NewRouteRegister(), nil, nil, nil, nil, sqlstore.InitTestDB(t), &usageStatsMock{t: t})
|
gLive, err := live.ProvideService(nil, cfg, routing.NewRouteRegister(), nil, nil, nil, nil, sqlstore.InitTestDB(t), &usageStatsMock{t: t})
|
||||||
|
@ -17,8 +17,11 @@ type Report struct {
|
|||||||
|
|
||||||
type MetricsFunc func() (map[string]interface{}, error)
|
type MetricsFunc func() (map[string]interface{}, error)
|
||||||
|
|
||||||
|
type SendReportCallbackFunc func()
|
||||||
|
|
||||||
type Service interface {
|
type Service interface {
|
||||||
GetUsageReport(context.Context) (Report, error)
|
GetUsageReport(context.Context) (Report, error)
|
||||||
RegisterMetricsFunc(MetricsFunc)
|
RegisterMetricsFunc(MetricsFunc)
|
||||||
|
RegisterSendReportCallback(SendReportCallbackFunc)
|
||||||
ShouldBeReported(string) bool
|
ShouldBeReported(string) bool
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ type UsageStats struct {
|
|||||||
externalMetrics []usagestats.MetricsFunc
|
externalMetrics []usagestats.MetricsFunc
|
||||||
concurrentUserStatsCache memoConcurrentUserStats
|
concurrentUserStatsCache memoConcurrentUserStats
|
||||||
startTime time.Time
|
startTime time.Time
|
||||||
|
sendReportCallbacks []usagestats.SendReportCallbackFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProvideService(cfg *setting.Cfg, bus bus.Bus, sqlStore *sqlstore.SQLStore, pluginManager plugins.Manager,
|
func ProvideService(cfg *setting.Cfg, bus bus.Bus, sqlStore *sqlstore.SQLStore, pluginManager plugins.Manager,
|
||||||
@ -91,6 +92,10 @@ func (uss *UsageStats) Run(ctx context.Context) error {
|
|||||||
nextSendInterval = sendInterval
|
nextSendInterval = sendInterval
|
||||||
sendReportTicker.Reset(nextSendInterval)
|
sendReportTicker.Reset(nextSendInterval)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, callback := range uss.sendReportCallbacks {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
case <-updateStatsTicker.C:
|
case <-updateStatsTicker.C:
|
||||||
uss.updateTotalStats()
|
uss.updateTotalStats()
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
@ -138,3 +143,7 @@ FROM (select count(1) as tokens from user_auth_token group by user_id) uat;`
|
|||||||
uss.concurrentUserStatsCache.memoized = time.Now()
|
uss.concurrentUserStatsCache.memoized = time.Now()
|
||||||
return uss.concurrentUserStatsCache.stats, nil
|
return uss.concurrentUserStatsCache.stats, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (uss *UsageStats) RegisterSendReportCallback(c usagestats.SendReportCallbackFunc) {
|
||||||
|
uss.sendReportCallbacks = append(uss.sendReportCallbacks, c)
|
||||||
|
}
|
||||||
|
@ -71,6 +71,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
|
||||||
|
|
||||||
type evaluatingPermissionsTestCase struct {
|
type evaluatingPermissionsTestCase struct {
|
||||||
desc string
|
desc string
|
||||||
user userTestCase
|
user userTestCase
|
||||||
|
@ -67,6 +67,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
|
||||||
|
|
||||||
func TestEngineProcessJob(t *testing.T) {
|
func TestEngineProcessJob(t *testing.T) {
|
||||||
Convey("Alerting engine job processing", t, func() {
|
Convey("Alerting engine job processing", t, func() {
|
||||||
bus := bus.New()
|
bus := bus.New()
|
||||||
|
@ -1031,7 +1031,13 @@ func (g *GrafanaLive) sampleLiveStats() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GrafanaLive) resetLiveStats() {
|
||||||
|
g.usageStats = usageStats{}
|
||||||
|
}
|
||||||
|
|
||||||
func (g *GrafanaLive) registerUsageMetrics() {
|
func (g *GrafanaLive) registerUsageMetrics() {
|
||||||
|
g.usageStatsService.RegisterSendReportCallback(g.resetLiveStats)
|
||||||
|
|
||||||
g.usageStatsService.RegisterMetricsFunc(func() (map[string]interface{}, error) {
|
g.usageStatsService.RegisterMetricsFunc(func() (map[string]interface{}, error) {
|
||||||
liveUsersAvg := 0
|
liveUsersAvg := 0
|
||||||
liveClientsAvg := 0
|
liveClientsAvg := 0
|
||||||
@ -1051,8 +1057,6 @@ func (g *GrafanaLive) registerUsageMetrics() {
|
|||||||
"stats.live_clients_avg.count": liveClientsAvg,
|
"stats.live_clients_avg.count": liveClientsAvg,
|
||||||
}
|
}
|
||||||
|
|
||||||
g.usageStats = usageStats{}
|
|
||||||
|
|
||||||
return metrics, nil
|
return metrics, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user