diff options
author | Neil Johnson <neil@matrix.org> | 2019-05-24 16:32:10 +0100 |
---|---|---|
committer | Neil Johnson <neil@matrix.org> | 2019-05-24 16:32:10 +0100 |
commit | cebb2b64caad4209805e7d28475d45bb9bcfd2ca (patch) | |
tree | 6b1ccc642bc0f04167e893547576e3489314fd2f /synapse | |
parent | Fix appservice timestamp massaging (#5233) (diff) | |
download | synapse-cebb2b64caad4209805e7d28475d45bb9bcfd2ca.tar.xz |
add monthly active users to phonehome stats
Diffstat (limited to 'synapse')
-rwxr-xr-x | synapse/app/homeserver.py | 1 | ||||
-rw-r--r-- | synapse/storage/__init__.py | 44 |
2 files changed, 30 insertions, 15 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py index 1045d28949..b27b12e73d 100755 --- a/synapse/app/homeserver.py +++ b/synapse/app/homeserver.py @@ -540,6 +540,7 @@ def run(hs): stats["total_room_count"] = room_count stats["daily_active_users"] = yield hs.get_datastore().count_daily_users() + stats["monthly_active_users"] = yield hs.get_datastore().count_monthly_users() stats["daily_active_rooms"] = yield hs.get_datastore().count_daily_active_rooms() stats["daily_messages"] = yield hs.get_datastore().count_daily_messages() diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py index 66675d08ae..fcea54ad9c 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py @@ -277,23 +277,37 @@ class DataStore( """ Counts the number of users who used this homeserver in the last 24 hours. """ + yesterday = int(self._clock.time_msec()) - (1000 * 60 * 60 * 24) + return self.runInteraction("count_daily_users", self._count_users, yesterday,) - def _count_users(txn): - yesterday = int(self._clock.time_msec()) - (1000 * 60 * 60 * 24) - - sql = """ - SELECT COALESCE(count(*), 0) FROM ( - SELECT user_id FROM user_ips - WHERE last_seen > ? - GROUP BY user_id - ) u - """ - - txn.execute(sql, (yesterday,)) - count, = txn.fetchone() - return count + def count_monthly_users(self): + """ + Counts the number of users who used this homeserver in the last 30 days. + Note this method is intended for phonehome metrics only and is different + from the mau figure in synapse.storage.monthly_active_users which, + amongst other things, includes a 3 day grace period before a user counts. + """ + thirty_days_ago = int(self._clock.time_msec()) - (30 * 1000 * 60 * 60 * 24) + return self.runInteraction( + "count_monthly_users", + self._count_users, + thirty_days_ago, + ) - return self.runInteraction("count_users", _count_users) + def _count_users(self, txn, time_from): + """ + Returns number of users seen in the past time_from period + """ + sql = """ + SELECT COALESCE(count(*), 0) FROM ( + SELECT user_id FROM user_ips + WHERE last_seen > ? + GROUP BY user_id + ) u + """ + txn.execute(sql, (time_from,)) + count, = txn.fetchone() + return count def count_r30_users(self): """ |