Esempio n. 1
0
def get_client():
    client = None
    dsn = talisker.get_config().statsd_dsn
    if dsn is None:
        client = DummyClient()
    else:
        if not dsn.startswith('udp'):
            raise Exception('Talisker only supports udp stastd client')
        client = StatsClient(*parse_statsd_dsn(dsn))

    return client
Esempio n. 2
0
def get_client(dsn=None):
    global _client

    if _client is None:
        if dsn is None:
            dsn = os.environ.get('STATSD_DSN', None)
        if dsn is None:
            _client = DummyClient()
        else:
            if not dsn.startswith('udp'):
                raise Exception('Talisker only supports udp stastd client')
            _client = StatsClient(*parse_statsd_dsn(dsn))

    return _client
def configure_stats(config, _client=None):
    if _client is not None:
        return set_stats_client(_client)

    if not config:
        config = 'localhost:8125'
    parts = config.split(':')
    host = parts[0]
    port = 8125
    if len(parts) > 1:
        port = int(parts[1])

    client = StatsClient(host=host, port=port)
    return set_stats_client(client)
Esempio n. 4
0
def get_client():
    client = None
    logger = logging.getLogger(__name__)
    dsn = os.environ.get('STATSD_DSN', None)
    if dsn is None:
        client = DummyClient()
        logger.info('configuring statsd DummyClient')
    else:
        if not dsn.startswith('udp'):
            raise Exception('Talisker only supports udp stastd client')
        client = StatsClient(*parse_statsd_dsn(dsn))
        logger.info('configuring statsd via environment',
                    extra={'STATSD_DSN': dsn})

    return client
def statsd():
    """
    Returns a new StatsD client.

    Use this instead of:
        statsd.defaults.django.statsd

    because statsd.defaults.django.statsd is a singleton
    initialised at the start of the process and therefore
    does not deal with chnages to the IP of the statsd instance.
    """
    return StatsClient(
        host=HOST,
        port=PORT,
        prefix=PREFIX,
        maxudpsize=MAXUDPSIZE,
        ipv6=IPV6,
    )
Esempio n. 6
0
def _client(prefix=None):
    sc = StatsClient(host=ADDR[0], port=ADDR[1], prefix=prefix)
    sc._sock = mock.Mock()
    return sc
statsd_active = is_true(os.environ.get('ODOO_STATSD'))

statsd = None
customer = None
environment = None
if statsd_active and statsd is None and StatsClient is not None:
    if not os.environ.get('STATSD_CUSTOMER'):
        raise Exception(
            'STATSD_CUSTOMER must contain the name of the customer')
    customer = os.environ.get('STATSD_CUSTOMER')
    if os.environ.get('STATSD_ENVIRONMENT'):
        environment = os.environ['STATSD_ENVIRONMENT']
    elif config.get('running_env'):
        environment = config['running_env']
    else:
        raise Exception(
            'Either STATSD_ENVIRONMENT or configuration option running_env '
            'must contain the environment (prod, integration, ...)')

    host = os.getenv('STATSD_HOST', defaults.HOST)
    port = int(os.getenv('STATSD_PORT', defaults.PORT))
    prefix = os.getenv('STATSD_PREFIX', defaults.PREFIX)
    maxudpsize = int(os.getenv('STATSD_MAXUDPSIZE', defaults.MAXUDPSIZE))
    ipv6 = bool(int(os.getenv('STATSD_IPV6', defaults.IPV6)))
    statsd = StatsClient(host=host,
                         port=port,
                         prefix='odoo',
                         maxudpsize=maxudpsize,
                         ipv6=ipv6)
Esempio n. 8
0
 def __init__(self, *_):
     host = settings.STATSD_HOST
     port = settings.STATSD_PORT
     prefix = settings.STATSD_PREFIX
     StandardStatsClient.__init__(self, host, port, prefix)
Esempio n. 9
0
from __future__ import absolute_import
from django.conf import settings

from statsd import defaults
from statsd.client import StatsClient


statsd = None

if statsd is None:
    host = getattr(settings, 'STATSD_HOST', defaults.HOST)
    port = getattr(settings, 'STATSD_PORT', defaults.PORT)
    prefix = getattr(settings, 'STATSD_PREFIX', defaults.PREFIX)
    maxudpsize = getattr(settings, 'STATSD_MAXUDPSIZE', defaults.MAXUDPSIZE)
    statsd = StatsClient(host=host, port=port, prefix=prefix, maxudpsize=maxudpsize)
Esempio n. 10
0
 def __init__(self, *_):
     host = settings.STATSD_HOST
     port = settings.STATSD_PORT
     prefix = settings.STATSD_PREFIX
     StandardStatsClient.__init__(self, host, port, prefix)
Esempio n. 11
0
from __future__ import absolute_import
import os

from statsd import defaults
from statsd.client import StatsClient

statsd = None

if statsd is None:
    host = os.getenv('STATSD_HOST', defaults.HOST)
    port = int(os.getenv('STATSD_PORT', defaults.PORT))
    prefix = os.getenv('STATSD_PREFIX', defaults.PREFIX)
    maxudpsize = int(os.getenv('STATSD_MAXUDPSIZE', defaults.MAXUDPSIZE))
    statsd = StatsClient(host, port, prefix, maxudpsize)
Esempio n. 12
0
def main():
    parser = optparse.OptionParser(
        description='send statistics with <prefix> to statsd',
        usage='%prog [options] <prefix>',
    )
    parser.epilog = 'ie: %s stats.ostools.hostname' % parser.get_prog_name()

    parser.add_option('-H', '--host',
        dest='host', metavar='HOST', default='localhost',
        help='statsd hostname/ip (default: localhost)',
    )
    parser.add_option('-p', '--port',
        dest='port', metavar='PORT', type='int', default=8125,
        help='statsd port (default: 8125)',
    )
    parser.add_option('-i', '--interval',
        dest='interval', metavar='INT', type='int', default=10,
        help='interval to pass to stat commands (default: 10)',
    )
    parser.add_option('-d', '--debug',
        dest='debug', action='store_true', default=False,
        help='turn on debugging',
    )
    (opts, args) = parser.parse_args()

    if len(args) != 1:
        parser.error('Please supply a stats prefix')
        sys.exit(1)
    prefix = args[0]

    if opts.debug:
        rootlogger = logging.getLogger()
        rootlogger.setLevel(logging.DEBUG)
        del rootlogger

    statsd = StatsClient(opts.host, opts.port, prefix)

    os.environ['LC_ALL'] = 'C' # standardize output format (datetime, ...)
    setproctitle('statsd-ostools: master %s:%s (%s)' % (
        opts.host,
        opts.port,
        prefix,
    ))

    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)

    kids = []
    for workerklass in worker.workers:
        pid = os.fork()
        kids.append(pid)
        if pid == 0:
            sys.exit(workerklass(statsd, opts.interval).run())

    while not SIGNALED:
        log.debug('master: sleeping...')
        time.sleep(opts.interval)

    for pid in kids:
        exceptions = []
        try:
            os.kill(pid, signal.SIGTERM)
            os.waitpid(pid, 0)
        except OSError as e:
            if e.errno not in (errno.ECHILD, errno.ESRCH):
                exceptions.append(sys.exc_info())

    for exc_info in exceptions:
        log.error('unhandled error during cleanup', exc_info=exc_info)

    sys.exit(0)
Esempio n. 13
0
def _client(prefix=None):
    sc = StatsClient(host=ADDR[0], port=ADDR[1], prefix=prefix)
    sc._sock = mock.Mock()
    return sc
Esempio n. 14
0
 def insert_ipv6(**kwargs):
     if 'ipv6' not in kwargs:
         kwargs['ipv6'] = statsd_django_defaults.ipv6
     return StatsClient(**kwargs)