Usage stats: Count API keys (#42883)

* Stats: add api key count to usage stats

* Chore: correctly capitalize struct member
This commit is contained in:
J Guerreiro 2021-12-22 16:37:45 +00:00 committed by GitHub
parent f63c2e4bc4
commit a1b8b5d123
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 0 deletions

View File

@ -84,6 +84,7 @@ func (uss *UsageStats) GetUsageReport(ctx context.Context) (usagestats.Report, e
metrics["stats.dashboards_viewers_can_admin.count"] = statsQuery.Result.DashboardsViewersCanAdmin
metrics["stats.folders_viewers_can_edit.count"] = statsQuery.Result.FoldersViewersCanEdit
metrics["stats.folders_viewers_can_admin.count"] = statsQuery.Result.FoldersViewersCanAdmin
metrics["stats.api_keys.count"] = statsQuery.Result.APIKeys
ossEditionCount := 1
enterpriseEditionCount := 0

View File

@ -79,6 +79,7 @@ func TestMetrics(t *testing.T) {
DashboardsViewersCanEdit: 2,
FoldersViewersCanAdmin: 1,
FoldersViewersCanEdit: 5,
APIKeys: 2,
}
getSystemStatsQuery = query
return nil
@ -344,6 +345,7 @@ func TestMetrics(t *testing.T) {
assert.Equal(t, getSystemStatsQuery.Result.FoldersViewersCanEdit, metrics.Get("stats.folders_viewers_can_edit.count").MustInt64())
assert.Equal(t, getSystemStatsQuery.Result.FoldersViewersCanAdmin, metrics.Get("stats.folders_viewers_can_admin.count").MustInt64())
assert.Equal(t, 15, metrics.Get("stats.total_auth_token.count").MustInt())
assert.Equal(t, 2, metrics.Get("stats.api_keys.count").MustInt())
assert.Equal(t, 5, metrics.Get("stats.avg_auth_token_per_user.count").MustInt())
assert.Equal(t, 16, metrics.Get("stats.dashboard_versions.count").MustInt())
assert.Equal(t, 17, metrics.Get("stats.annotations.count").MustInt())

View File

@ -18,6 +18,7 @@ type SystemStats struct {
Folders int64
ProvisionedDashboards int64
AuthTokens int64
APIKeys int64 `xorm:"api_keys"`
DashboardVersions int64
Annotations int64
AlertRules int64

View File

@ -93,6 +93,7 @@ func GetSystemStats(ctx context.Context, query *models.GetSystemStatsQuery) erro
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("team") + `) AS teams,`)
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("user_auth_token") + `) AS auth_tokens,`)
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("alert_rule") + `) AS alert_rules,`)
sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("api_key") + `) AS api_keys,`)
sb.Write(`(SELECT COUNT(id) FROM `+dialect.Quote("library_element")+` WHERE kind = ?) AS library_panels,`, models.PanelElement)
sb.Write(`(SELECT COUNT(id) FROM `+dialect.Quote("library_element")+` WHERE kind = ?) AS library_variables,`, models.VariableElement)

View File

@ -27,6 +27,7 @@ func TestStatsDataAccess(t *testing.T) {
assert.Equal(t, int64(3), query.Result.Admins)
assert.Equal(t, int64(0), query.Result.LibraryPanels)
assert.Equal(t, int64(0), query.Result.LibraryVariables)
assert.Equal(t, int64(1), query.Result.APIKeys)
})
t.Run("Get system user count stats should not results in error", func(t *testing.T) {
@ -125,4 +126,9 @@ func populateDB(t *testing.T, sqlStore *SQLStore) {
// force renewal of user stats
err = updateUserRoleCountsIfNecessary(context.Background(), true)
require.NoError(t, err)
// add 1st api key
addAPIKeyCmd := &models.AddApiKeyCommand{OrgId: org.Id, Name: "Test key 1", Key: "secret-key", Role: models.ROLE_VIEWER}
err = sqlStore.AddAPIKey(context.Background(), addAPIKeyCmd)
require.NoError(t, err)
}