mirror of
https://github.com/element-hq/synapse.git
synced 2026-07-19 07:17:12 +00:00
This reports the total count of users (split by appservice) which is meant to be the monthless counterpart to the MAU metric. Context: > So this is largely for billing purposes and wanting to know the change in the number of users. If a user is deactivated then we no longer want to count them. Consumers *might* want to count appservice users, and maybe count them based on the service (perhaps you change more for users under bridge X or bridge Y). > > *-- https://github.com/element-hq/synapse/pull/19848#discussion_r3402216234*
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
#
|
|
# This file is licensed under the Affero General Public License (AGPL) version 3.
|
|
#
|
|
# Copyright (C) 2026 Element Creations Ltd
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# See the GNU Affero General Public License for more details:
|
|
# <https://www.gnu.org/licenses/agpl-3.0.html>.
|
|
|
|
from synapse.metrics import (
|
|
REGISTRY,
|
|
generate_latest,
|
|
)
|
|
|
|
|
|
def get_latest_metrics() -> dict[str, str]:
|
|
"""
|
|
Collect the latest metrics from the registry and parse them into an easy to use map.
|
|
The key includes the metric name and labels.
|
|
|
|
Example output:
|
|
{
|
|
"synapse_util_caches_cache_size": "0.0",
|
|
"synapse_util_caches_cache_max_size{name="some_cache",server_name="hs1"}": "777.0",
|
|
...
|
|
}
|
|
"""
|
|
metric_map = {
|
|
x.split(b" ")[0].decode("ascii"): x.split(b" ")[1].decode("ascii")
|
|
for x in filter(
|
|
lambda x: len(x) > 0 and not x.startswith(b"#"),
|
|
generate_latest(REGISTRY).split(b"\n"),
|
|
)
|
|
}
|
|
|
|
return metric_map
|