Add prometheus metrics for number of badge update pushes. (#4709)

We're counting the number of push notifications, but not the number of badges;
I'd like to see if they are significant.
pull/4715/head
Richard van der Hoff 2019-02-22 10:57:15 +00:00 committed by GitHub
parent e1666af9be
commit e07384c4e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 8 deletions

1
changelog.d/4709.misc Normal file
View File

@ -0,0 +1 @@
Add prometheus metrics for number of badge update pushes.

View File

@ -32,9 +32,25 @@ if six.PY3:
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
http_push_processed_counter = Counter("synapse_http_httppusher_http_pushes_processed", "") http_push_processed_counter = Counter(
"synapse_http_httppusher_http_pushes_processed",
"Number of push notifications successfully sent",
)
http_push_failed_counter = Counter("synapse_http_httppusher_http_pushes_failed", "") http_push_failed_counter = Counter(
"synapse_http_httppusher_http_pushes_failed",
"Number of push notifications which failed",
)
http_badges_processed_counter = Counter(
"synapse_http_httppusher_badge_updates_processed",
"Number of badge updates successfully sent",
)
http_badges_failed_counter = Counter(
"synapse_http_httppusher_badge_updates_failed",
"Number of badge updates which failed",
)
class HttpPusher(object): class HttpPusher(object):
@ -346,6 +362,10 @@ class HttpPusher(object):
@defer.inlineCallbacks @defer.inlineCallbacks
def _send_badge(self, badge): def _send_badge(self, badge):
"""
Args:
badge (int): number of unread messages
"""
logger.info("Sending updated badge count %d to %s", badge, self.name) logger.info("Sending updated badge count %d to %s", badge, self.name)
d = { d = {
'notification': { 'notification': {
@ -366,14 +386,11 @@ class HttpPusher(object):
} }
} }
try: try:
resp = yield self.http_client.post_json_get_json(self.url, d) yield self.http_client.post_json_get_json(self.url, d)
http_badges_processed_counter.inc()
except Exception as e: except Exception as e:
logger.warning( logger.warning(
"Failed to send badge count to %s: %s %s", "Failed to send badge count to %s: %s %s",
self.name, type(e), e, self.name, type(e), e,
) )
defer.returnValue(False) http_badges_failed_counter.inc()
rejected = []
if 'rejected' in resp:
rejected = resp['rejected']
defer.returnValue(rejected)