diff --git a/docs/reference/http.rst b/docs/reference/http.rst index c6f62f762c3..34e0cb8712c 100644 --- a/docs/reference/http.rst +++ b/docs/reference/http.rst @@ -171,6 +171,9 @@ Auth Extension ``auth_ui_renders_total`` **Counter.** Number of UI pages rendered by the Auth extension. +``auth_providers`` + **Histogram.** Number of Auth providers configured. + Errors ^^^^^^ diff --git a/edb/server/dbview/dbview.pxd b/edb/server/dbview/dbview.pxd index f01c4f3bed4..2008f0a4ba5 100644 --- a/edb/server/dbview/dbview.pxd +++ b/edb/server/dbview/dbview.pxd @@ -88,6 +88,7 @@ cdef class Database: cdef _cache_compiled_query(self, key, compiled) cdef _new_view(self, query_cache, protocol_version) cdef _remove_view(self, view) + cdef _observe_auth_ext_config(self) cdef _update_backend_ids(self, new_types) cdef _set_and_signal_new_user_schema( self, diff --git a/edb/server/dbview/dbview.pyx b/edb/server/dbview/dbview.pyx index 438a185980f..e667be68083 100644 --- a/edb/server/dbview/dbview.pyx +++ b/edb/server/dbview/dbview.pyx @@ -138,6 +138,7 @@ cdef class Database: self.reflection_cache = reflection_cache self.backend_ids = backend_ids self.extensions = extensions + self._observe_auth_ext_config() @property def server(self): @@ -176,8 +177,27 @@ cdef class Database: self.reflection_cache = reflection_cache if db_config is not None: self.db_config = db_config + self._observe_auth_ext_config() self._invalidate_caches() + cdef _observe_auth_ext_config(self): + key = "ext::auth::AuthConfig::providers" + if ( + self.db_config is not None and + self.user_config_spec is not None and + key in self.user_config_spec + ): + providers = config.lookup( + key, + self.db_config, + spec=self.user_config_spec, + ) + metrics.auth_providers.set( + len(providers), + self.tenant.get_instance_name(), + self.name, + ) + cdef _update_backend_ids(self, new_types): self.backend_ids.update(new_types) diff --git a/edb/server/metrics.py b/edb/server/metrics.py index ab3b32a8b00..95f8436add1 100644 --- a/edb/server/metrics.py +++ b/edb/server/metrics.py @@ -187,3 +187,9 @@ "Number of UI pages rendered by the Auth extension.", labels=("tenant",), ) + +auth_providers = registry.new_labeled_gauge( + 'auth_providers', + 'Number of Auth providers configured.', + labels=('tenant', 'branch'), +)