diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-03-19 11:00:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-19 10:00:24 +0000 |
commit | 8c75667ad7810b4c05e40f7665e724a40aaf4d64 (patch) | |
tree | 151260d3d74a739c2d658df8d651e73a0a6ff06d /synapse/push/pusherpool.py | |
parent | Move pusherpool startup into _base.setup (#7104) (diff) | |
download | synapse-8c75667ad7810b4c05e40f7665e724a40aaf4d64.tar.xz |
Add prometheus metrics for the number of active pushers (#7103)
Diffstat (limited to '')
-rw-r--r-- | synapse/push/pusherpool.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/synapse/push/pusherpool.py b/synapse/push/pusherpool.py index 01789a9fb4..bf721759df 100644 --- a/synapse/push/pusherpool.py +++ b/synapse/push/pusherpool.py @@ -15,11 +15,16 @@ # limitations under the License. import logging +from collections import defaultdict +from typing import Dict, Tuple, Union from twisted.internet import defer +from synapse.metrics import LaterGauge from synapse.metrics.background_process_metrics import run_as_background_process from synapse.push import PusherConfigException +from synapse.push.emailpusher import EmailPusher +from synapse.push.httppusher import HttpPusher from synapse.push.pusher import PusherFactory from synapse.util.async_helpers import concurrently_execute @@ -47,7 +52,24 @@ class PusherPool: self._should_start_pushers = _hs.config.start_pushers self.store = self.hs.get_datastore() self.clock = self.hs.get_clock() - self.pushers = {} + + # map from user id to app_id:pushkey to pusher + self.pushers = {} # type: Dict[str, Dict[str, Union[HttpPusher, EmailPusher]]] + + def count_pushers(): + results = defaultdict(int) # type: Dict[Tuple[str, str], int] + for pushers in self.pushers.values(): + for pusher in pushers.values(): + k = (type(pusher).__name__, pusher.app_id) + results[k] += 1 + return results + + LaterGauge( + name="synapse_pushers", + desc="the number of active pushers", + labels=["kind", "app_id"], + caller=count_pushers, + ) def start(self): """Starts the pushers off in a background process. |