diff --git a/jupyterhub/handlers/base.py b/jupyterhub/handlers/base.py index af16c9c2..9bde4211 100644 --- a/jupyterhub/handlers/base.py +++ b/jupyterhub/handlers/base.py @@ -545,6 +545,7 @@ class BaseHandler(RequestHandler): spawner._stop_pending = False toc = IOLoop.current().time() self.log.info("User %s server took %.3f seconds to stop", user.name, toc - tic) + self.statsd.timing('spawner.stop', (toc - tic) * 1000) try: yield gen.with_timeout(timedelta(seconds=self.slow_stop_timeout), stop()) diff --git a/jupyterhub/user.py b/jupyterhub/user.py index dcb6d67d..7f1bbbd4 100644 --- a/jupyterhub/user.py +++ b/jupyterhub/user.py @@ -421,10 +421,12 @@ class User(HasTraits): user=self.name, s=spawner.start_timeout, )) e.reason = 'timeout' + self.settings['statsd'].incr('spawner.failure.timeout') else: self.log.error("Unhandled error starting {user}'s server: {error}".format( user=self.name, error=e, )) + self.settings['statsd'].incr('spawner.failure.error') e.reason = 'error' try: yield self.stop() @@ -457,11 +459,13 @@ class User(HasTraits): ) ) e.reason = 'timeout' + self.settings['statsd'].incr('spawner.failure.http_timeout') else: e.reason = 'error' self.log.error("Unhandled error waiting for {user}'s server to show up at {url}: {error}".format( user=self.name, url=server.url, error=e, )) + self.settings['statsd'].incr('spawner.failure.http_error') try: yield self.stop() except Exception: