diff --git a/edb/server/compiler/ddl.py b/edb/server/compiler/ddl.py index 8c99d2d828a..e9d0924a029 100644 --- a/edb/server/compiler/ddl.py +++ b/edb/server/compiler/ddl.py @@ -1247,7 +1247,7 @@ def produce_feature_used_metrics( features: dict[str, float] = {} def _track(key: str) -> None: - features[key] = 1 + features[key] = features.get(key, 0) + 1 # TODO(perf): Should we optimize peeking into the innards directly # so we can skip creating the proxies? @@ -1408,7 +1408,7 @@ def administer_repair_schema( user_schema=current_tx.get_user_schema_if_updated(), global_schema=current_tx.get_global_schema_if_updated(), config_ops=config_ops, - feature_used_metrics={}, + feature_used_metrics=None, ) diff --git a/edb/server/dbview/dbview.pyx b/edb/server/dbview/dbview.pyx index 49574d6dced..7ee48274392 100644 --- a/edb/server/dbview/dbview.pyx +++ b/edb/server/dbview/dbview.pyx @@ -359,12 +359,20 @@ cdef class Database: tname = self.tenant.get_instance_name() keys = self._feature_used_metrics.keys() | feature_used_metrics.keys() for key in keys: + # Update the count of how many times the feature is used metrics.feature_used.inc( feature_used_metrics.get(key, 0.0) - self._feature_used_metrics.get(key, 0.0), tname, key, ) + # Update the count of branches using the feature at all + metrics.feature_used_branches.inc( + (feature_used_metrics.get(key, 0.0) > 0) + - (self._feature_used_metrics.get(key, 0.0) > 0), + tname, + key, + ) self._feature_used_metrics = feature_used_metrics @@ -1873,9 +1881,16 @@ cdef class DatabaseIndex: cdef inline set_current_branches(self): metrics.current_branches.set( sum( - 1 + dbname != defines.EDGEDB_SYSTEM_DB for dbname in self._dbs - if dbname != defines.EDGEDB_SYSTEM_DB + ), + self._tenant.get_instance_name(), + ) + metrics.current_introspected_branches.set( + sum( + dbname != defines.EDGEDB_SYSTEM_DB + and db.user_schema_pickle is not None + for dbname, db in self._dbs.items() ), self._tenant.get_instance_name(), ) diff --git a/edb/server/metrics.py b/edb/server/metrics.py index c76b62378e3..47a1c0b1cc8 100644 --- a/edb/server/metrics.py +++ b/edb/server/metrics.py @@ -47,6 +47,12 @@ labels=('tenant',), ) +current_introspected_branches = registry.new_labeled_gauge( + 'branches_introspected_current', + 'Current number of branches whose schemas are introspected.', + labels=('tenant',), +) + total_backend_connections = registry.new_labeled_counter( 'backend_connections_total', 'Total number of backend connections established.', @@ -211,11 +217,16 @@ labels=('tenant', 'extension'), ) -feature_used = registry.new_labeled_gauge( +feature_used_branches = registry.new_labeled_gauge( 'feature_used_branch_count_current', 'How many branches a schema feature is used by.', labels=('tenant', 'feature'), ) +feature_used = registry.new_labeled_gauge( + 'feature_used_num_count_current', + 'How many branches a schema feature is used by.', + labels=('tenant', 'feature'), +) auth_successful_logins = registry.new_labeled_counter( "auth_successful_logins_total",