__init__.py
52 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
r4632 | from __future__ import absolute_import, division, unicode_literals | |||
import logging | ||||
from .stream import TCPStatsClient, UnixSocketStatsClient # noqa | ||||
from .udp import StatsClient # noqa | ||||
HOST = 'localhost' | ||||
PORT = 8125 | ||||
IPV6 = False | ||||
PREFIX = None | ||||
MAXUDPSIZE = 512 | ||||
log = logging.getLogger('rhodecode.statsd') | ||||
def statsd_config(config, prefix='statsd.'): | ||||
_config = {} | ||||
for key in config.keys(): | ||||
if key.startswith(prefix): | ||||
_config[key[len(prefix):]] = config[key] | ||||
return _config | ||||
def client_from_config(configuration, prefix='statsd.', **kwargs): | ||||
from pyramid.settings import asbool | ||||
_config = statsd_config(configuration, prefix) | ||||
statsd_enabled = asbool(_config.pop('enabled', False)) | ||||
if not statsd_enabled: | ||||
log.debug('statsd client not enabled by statsd.enabled = flag, skipping...') | ||||
return | ||||
host = _config.pop('statsd_host', HOST) | ||||
port = _config.pop('statsd_port', PORT) | ||||
prefix = _config.pop('statsd_prefix', PREFIX) | ||||
maxudpsize = _config.pop('statsd_maxudpsize', MAXUDPSIZE) | ||||
ipv6 = asbool(_config.pop('statsd_ipv6', IPV6)) | ||||
log.debug('configured statsd client %s:%s', host, port) | ||||
r4886 | try: | |||
client = StatsClient( | ||||
host=host, port=port, prefix=prefix, maxudpsize=maxudpsize, ipv6=ipv6) | ||||
except Exception: | ||||
log.exception('StatsD is enabled, but failed to connect to statsd server, fallback: disable statsd') | ||||
client = None | ||||
return client | ||||
r4632 | ||||
def get_statsd_client(request): | ||||
return client_from_config(request.registry.settings) | ||||