Пример #1
0
def timestat(stat, millis):
    if not _is_setup():
        log.info('STATSD_HOST or STATSD_PORT not set up')
        return
    client = Client(settings.STATSD_HOST, settings.STATSD_PORT)
    client.timing(_statname(stat), millis)
    log.info('timestat: %s %sm' % (_statname(stat), millis))
Пример #2
0
    def __init__(self, min_level=NOTSET, include_loggers=NOTSET, exclude_loggers=NOTSET,
                host=NOTSET, port=NOTSET, prefix=NOTSET, *args, **kwargs):

        super(GraphiteProcessor, self).__init__(*args, **kwargs)

        if min_level is NOTSET:
            min_level = settings.GRAPIHTE_LEVEL
        if include_loggers is NOTSET:
            include_loggers = settings.GRAPHITE_INCLUDE_LOGGERS
        if exclude_loggers is NOTSET:
            exclude_loggers = settings.GRAPHITE_EXCLUDE_LOGGERS
        if host is NOTSET:
            host = settings.GRAPHITE_HOST
        if port is NOTSET:
            port = settings.GRAPHITE_PORT
        if prefix is NOTSET:
            prefix = settings.GRAPHITE_PREFIX

        self.min_level = min_level
        self.include_loggers = include_loggers
        self.exclude_loggers = exclude_loggers
        self.host = host
        self.port = port
        self.prefix = prefix

        self.client = Client(host=self.host, port=self.port)
Пример #3
0
def decrstat(stat, count=1):
    if not _is_setup():
        log.info('STATSD_HOST or STATSD_PORT not set up')
        return
    client = Client(settings.STATSD_HOST, settings.STATSD_PORT)
    client.decrement(_statname(stat), count)
    log.info('decrstat: %s %s' % (_statname(stat), count))
Пример #4
0
    def test_client_create(self):
        host, port = ('example.com', 8888)

        client = Client(host=host, port=port, prefix='pystatsd.tests')
        self.assertEqual(client.host, host)
        self.assertEqual(client.port, port)
        self.assertEqual(client.prefix, 'pystatsd.tests')
        self.assertEqual(client.addr, (socket.gethostbyname(host), port))
Пример #5
0
def addstat(stat, n):
    if not _is_setup():
        log.info('STATSD_HOST or STATSD_PORT not set up')
        return
    client = Client(settings.STATSD_HOST, settings.STATSD_PORT)
    client.update_stats(_statname(stat), n)
    log.info('addstat: %s %s' % (_statname(stat), n))
    
Пример #6
0
    def setUp(self):
        self.patchers = []

        socket_patcher = mock.patch('pystatsd.statsd.socket.socket')
        self.mock_socket = socket_patcher.start()
        self.patchers.append(socket_patcher)

        self.client = Client()
        self.addr = (socket.gethostbyname(self.client.host), self.client.port)
Пример #7
0
def backend_statsd(url, stats, prefix):
    from pystatsd import Client
    process_num = stats['Process_num']
    del (stats['Process_num'])
    server_name = socket.getfqdn().split('.')[0]
    prefix = '%s.%s.%s' % (prefix, server_name, int(process_num))
    logger.debug('Reporting to prefix: %s' % prefix)
    server, port = url.split(':')
    try:
        pystatsd_client = Client(host=server, port=port, prefix=prefix)
    except Exception, e:
        logger.error('Unable to connect to statsd backend %s: %s' % (url, e))
        raise
Пример #8
0
def create_stats_client():
    "Create the client which can be used for logging statistics"
    logger = logging.getLogger("pystatsd.client")
    logger.addHandler(logging.StreamHandler())
    try:
        stats_server = config.get("admin", {}).get("statsd_server", None)
        if stats_server:
            host, port = stats_server.rsplit(":", 1)
            return Client(host, port)
        else:
            return False
    except Exception:
        #TBD : Log stats error here
        return False
Пример #9
0
def create_stats_client(cfg=config):
    "Create the client which can be used for logging statistics"
    logger = logging.getLogger("pystatsd.client")
    logger.addHandler(logging.StreamHandler())
    try:
        stats_server = cfg.get("admin", {}).get("statsd_server", None)
        if stats_server:
            host, port = stats_server.rsplit(":", 1)
            return Client(host, port)
        else:
            logger.critical("Couldn't find statsd_server section in config")
            return False
    except Exception as e:
        logger.critical("Couldn't create stats client - %s", e, exc_info=True)
        return False
Пример #10
0
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Authors:
# - Luis Rodrigues, <*****@*****.**>, 2013

from pystatsd import Client

from rucio.common.config import config_get

import time

server = config_get('monitor', 'carbon_server')
port = config_get('monitor', 'carbon_port')
scope = config_get('monitor', 'user_scope')
pystatsd_client = Client(host=server, port=port, prefix=scope)


def record_counter(counters, delta=1):
    """
    Log one or more counters by arbitrary amounts

    :param counters: The counter or a list of counters to be updated.
    :param delta: The increment for the counter, by default increment by 1.
    """
    pystatsd_client.update_stats(counters, delta)


def record_gauge(stat, value):
    """
     Log gauge information for a single stat
Пример #11
0
SERVER = config_get('monitor',
                    'carbon_server',
                    raise_exception=False,
                    default='statsd-exporter-rucio-statsd-exporter')
PORT = config_get('monitor',
                  'carbon_port',
                  raise_exception=False,
                  default=8125)
SCOPE = config_get('monitor',
                   'user_scope',
                   raise_exception=False,
                   default='rucio')

print('Instantiating default client with %s %s %s' % (SERVER, PORT, SCOPE))

CLIENT = Client(host=SERVER, port=PORT, prefix=SCOPE)


def record_counter(counters, delta=1):
    """
    Log one or more counters by arbitrary amounts

    :param counters: The counter or a list of counters to be updated.
    :param delta: The increment for the counter, by default increment by 1.
    """
    CLIENT.update_stats(counters, delta)


def record_gauge(stat, value):
    """
     Log gauge information for a single stat
Пример #12
0
# coding=utf-8
from pystatsd import Client

sc = Client('example.org', 8125)

sc.timing('python_test.time', 500)
sc.increment('python_test.inc_int')
sc.decrement('python_test.decr_int')
sc.gauge('python_test.gauge', 42)
Пример #13
0
#!/usr/bin/env python

from pystatsd import Client, Server

sc = Client('localhost', 8125)

sc.timing('python_test.time', 500)
sc.increment('python_test.inc_int')
sc.decrement('python_test.decr_int')

srvr = Server(debug=True)
srvr.serve()
Пример #14
0
def main():
    s = Client('localhost',8125)
    n = LinuxNetStats()
    for k,v in n.forStatsd(prefix='host.com.eeqj.net.').items():
        s.update_stats(k,v)
Пример #15
0
class Metric(object):
    """
    The metrics client that communicates with graphite via local pystatsd.

    >>> from metrics import Metric
    >>> Metric.add("foo.bar.baz")
    >>> Metric.timing("foo.bar.millis", 123)
    """

    _client = Client()

    @classmethod
    def _add_namespace(cls, name):
        namespace = _config.get("namespace")
        return "%s.%s" % (namespace, name) if namespace else name


    @classmethod
    def add(cls, name, delta=1):
        """
        Updates a stats counter by arbitrary value (increments by one by default).

        >>> Metric.add("foo.bar.baz")      # increments by one
        >>> Metric.add("baz.bar.foo", 10)  # adds 10 to the stats counter

        @param name: the stats key
        @type name: str
        @param delta: the value to update
        @type delta: int
        """
        if not cls._client:
            return
        if not name:
            return
        if not delta:
            return

        cls._client.update_stats(cls._add_namespace(name), delta)

    @classmethod
    def timing(cls, name, time):
        """
        Submits time value for a given stats key.

        >>> Metric.timing("execution.time.baz", 123)

        @param name: the stats key
        @type name: str
        @param time: the time value to submit (in seconds)
        @type time: int or float
        """
        if not cls._client:
            return
        if not name:
            return
        if time:
            time = float(time)
        if not time:
            return

        millis = int(time * 1000 + .5)
        cls._client.timing(cls._add_namespace(name), millis)

    @classmethod
    def start_timing(cls, name):
        """
        Starts and returns a timing instance that tracks time for a given stats key. The stats
        will be updated once done() is invoked on the returned timing instance.

        >>> timer = Metric.start_timing("execution.time.baz")
        >>> # do stuff here...
        >>> timer.done()  # submits stats

        @param name: the stats key
        @type name: str
        @rtype: _Timing
        """
        return _Timing(name)
Пример #16
0
#!/usr/bin/env python

from pystatsd import Client, Server

sc = Client('rayners.org',8125)

sc.timing('python_test.time',500)
sc.increment('python_test.inc_int')
sc.decrement('python_test.decr_int')

srvr = Server(debug=True)
srvr.serve()
Пример #17
0
 def connect_node_js():
     server = __config.get('carbon', 'carbon_server')
     port = __config.get('carbon', 'carbon_port')
     scope = __config.get('carbon', 'user_scope')
     return Client(host=server, port=port, prefix=scope)