blob: 1b00f86933e92143a8a4b2807ded9c849a08e5ef [file] [log] [blame]
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import socket
import common
from autotest_lib.client.common_lib import global_config
from autotest_lib.client.common_lib.cros.graphite import autotest_es
from autotest_lib.client.common_lib.cros.graphite import es_utils
from autotest_lib.client.common_lib.cros.graphite import stats
# Pylint locally complains about "No value passed for parameter 'key'" here
# pylint: disable=E1120
# If one has their hostname listed including a domain, ie. |milleral.mtv|,
# then this will show up on Graphite as milleral/mtv/<stats>. This seems
# silly, so let's replace '.'s with '_'s to disambiguate Graphite folders
# from FQDN hostnames.
STATSD_SERVER = global_config.global_config.get_config_value('CROS',
'STATSD_SERVER', default='')
STATSD_PORT = global_config.global_config.get_config_value('CROS',
'STATSD_PORT', type=int, default=0)
hostname = global_config.global_config.get_config_value(
'SERVER', 'hostname', default='localhost')
if hostname.lower() in ['localhost', '127.0.0.1']:
hostname = socket.gethostname()
hostname = hostname.replace('.', '_')
_default_es = es_utils.ESMetadata(use_http=autotest_es.ES_USE_HTTP,
host=autotest_es.METADATA_ES_SERVER,
port=autotest_es.ES_PORT,
index=autotest_es.INDEX_METADATA,
udp_port=autotest_es.ES_UDP_PORT)
_statsd = stats.Statsd(es=_default_es, host=STATSD_SERVER, port=STATSD_PORT,
prefix=hostname)
def _es_init(original):
class _Derived(original):
def __init__(self, *args, **kwargs):
es = kwargs.pop('es', None)
super(_Derived, self).__init__(*args, **kwargs)
if es:
self.es = es
return _Derived
@_es_init
class Average(_statsd.Average):
"""Wrapper around _statsd.Average"""
@_es_init
class Counter(_statsd.Counter):
"""Wrapper around _statsd.Counter"""
@_es_init
class Gauge(_statsd.Gauge):
"""Wrapper around _statsd.Gauge"""
@_es_init
class Timer(_statsd.Timer):
"""Wrapper around _statsd.Timer"""
@_es_init
class Raw(_statsd.Raw):
"""Wrapper around _statd.Raw"""