diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2019-07-24 11:33:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-24 11:33:13 +0100 |
commit | 418635e68a127da24bf887adcbf19d3110c57630 (patch) | |
tree | c896f9452021f75ec0351f3e7fb4664463d49687 /synapse/util/caches/descriptors.py | |
parent | Make Jaeger fully configurable (#5694) (diff) | |
download | synapse-418635e68a127da24bf887adcbf19d3110c57630.tar.xz |
Add a prometheus metric for active cache lookups. (#5750)
* Add a prometheus metric for active cache lookups. * changelog
Diffstat (limited to 'synapse/util/caches/descriptors.py')
-rw-r--r-- | synapse/util/caches/descriptors.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/synapse/util/caches/descriptors.py b/synapse/util/caches/descriptors.py index a1acacbde9..7e69cf55fb 100644 --- a/synapse/util/caches/descriptors.py +++ b/synapse/util/caches/descriptors.py @@ -22,6 +22,8 @@ from collections import namedtuple import six from six import itervalues, string_types +from prometheus_client import Gauge + from twisted.internet import defer from synapse.logging.context import make_deferred_yieldable, preserve_fn @@ -37,6 +39,12 @@ from . import register_cache logger = logging.getLogger(__name__) +cache_pending_metric = Gauge( + "synapse_util_caches_cache_pending", + "Number of lookups currently pending for this cache", + ["name"], +) + _CacheSentinel = object() @@ -82,11 +90,19 @@ class Cache(object): self.name = name self.keylen = keylen self.thread = None - self.metrics = register_cache("cache", name, self.cache) + self.metrics = register_cache( + "cache", + name, + self.cache, + collect_callback=self._metrics_collection_callback, + ) def _on_evicted(self, evicted_count): self.metrics.inc_evictions(evicted_count) + def _metrics_collection_callback(self): + cache_pending_metric.labels(self.name).set(len(self._pending_deferred_cache)) + def check_thread(self): expected_thread = self.thread if expected_thread is None: |