diff --git a/pkg/infra/metrics/metrics.go b/pkg/infra/metrics/metrics.go index f98512f8b99..551d8da8f5a 100644 --- a/pkg/infra/metrics/metrics.go +++ b/pkg/infra/metrics/metrics.go @@ -108,6 +108,9 @@ var ( // MAccessPermissionsCacheUsage is a metric counter for cache usage MAccessPermissionsCacheUsage *prometheus.CounterVec + // MAccessSearchUserPermissionsCacheUsage is a metric counter for cache usage + MAccessSearchUserPermissionsCacheUsage *prometheus.CounterVec + // MPublicDashboardRequestCount is a metric counter for public dashboards requests MPublicDashboardRequestCount prometheus.Counter @@ -648,6 +651,12 @@ func init() { Namespace: ExporterName, }, []string{"status"}, map[string][]string{"status": accesscontrol.CacheUsageStatuses}) + MAccessSearchUserPermissionsCacheUsage = metricutil.NewCounterVecStartingAtZero(prometheus.CounterOpts{ + Name: "access_search_user_permissions_cache_usage", + Help: "access control search user permissions cache hit/miss", + Namespace: ExporterName, + }, []string{"status"}, map[string][]string{"status": accesscontrol.CacheUsageStatuses}) + StatsTotalLibraryPanels = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "stat_totals_library_panels", Help: "total amount of library panels in the database", @@ -768,6 +777,7 @@ func initMetricVars(reg prometheus.Registerer) { MAccessSearchPermissionsSummary, MAccessEvaluationCount, MAccessPermissionsCacheUsage, + MAccessSearchUserPermissionsCacheUsage, MAlertingActiveAlerts, MStatTotalDashboards, MStatTotalFolders, diff --git a/pkg/services/accesscontrol/acimpl/service.go b/pkg/services/accesscontrol/acimpl/service.go index cd10de3246f..cfe5de6932c 100644 --- a/pkg/services/accesscontrol/acimpl/service.go +++ b/pkg/services/accesscontrol/acimpl/service.go @@ -407,9 +407,12 @@ func (s *Service) searchUserPermissionsFromCache(orgID int64, searchOptions acce key := permissionCacheKey(tempUser) permissions, ok := s.cache.Get((key)) if !ok { + metrics.MAccessSearchUserPermissionsCacheUsage.WithLabelValues(accesscontrol.CacheMiss).Inc() return nil, false } + metrics.MAccessSearchUserPermissionsCacheUsage.WithLabelValues(accesscontrol.CacheHit).Inc() + s.log.Debug("Using cached permissions", "key", key) filteredPermissions := make([]accesscontrol.Permission, 0) for _, permission := range permissions.([]accesscontrol.Permission) {