class Stats(object): def __init__(self): self.name = '' self.type = '' self.app = None self.stats = {} # There are two modes that are not exclusive # first the kernel mode self.api_key = '' self.secret = '' self.http_proxy = '' self.con = HTTPClient(uri='http://kernel.shinken.io') # then the statsd one self.statsd_sock = None self.statsd_addr = None def launch_reaper_thread(self): self.reaper_thread = threading.Thread(None, target=self.reaper, name='stats-reaper') self.reaper_thread.daemon = True self.reaper_thread.start() def register(self, app, name, _type, api_key='', secret='', http_proxy='', statsd_host='localhost', statsd_port=8125, statsd_prefix='shinken', statsd_enabled=False): self.app = app self.name = name self.type = _type # kernel.io part self.api_key = api_key self.secret = secret self.http_proxy = http_proxy # local statsd part self.statsd_host = statsd_host self.statsd_port = statsd_port self.statsd_prefix = statsd_prefix self.statsd_enabled = statsd_enabled if self.statsd_enabled: logger.debug('Loading statsd communication with %s:%s.%s', self.statsd_host, self.statsd_port, self.statsd_prefix) self.load_statsd() # Also load the proxy if need self.con.set_proxy(self.http_proxy) # Let be crystal clear about why I don't use the statsd lib in python: it's crappy. # how guys did you f**k this up to this point? django by default for the conf?? really?... # So raw socket are far better here def load_statsd(self): try: self.statsd_addr = (socket.gethostbyname(self.statsd_host), self.statsd_port) self.statsd_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) except (socket.error, socket.gaierror), exp: logger.error('Cannot create statsd socket: %s' % exp) return
class Stats(object): def __init__(self): self.name = "" self.type = "" self.app = None self.stats = {} # There are two modes that are not exclusive # first the kernel mode self.api_key = "" self.secret = "" self.http_proxy = "" self.con = HTTPClient(uri="http://kernel.shinken.io") # then the statsd one self.statsd_interval = 5 self.statsd_types = ["system", "queue", "perf"] self.statsd_sock = None self.statsd_addr = None self.statsd_types = "system,object,queue,perf" self.statsd_pattern = None self.name_cache = {} def launch_reaper_thread(self): self.reaper_thread = threading.Thread(None, target=self.reaper, name="stats-reaper") self.reaper_thread.daemon = True self.reaper_thread.start() def launch_harvester_thread(self): self.harvester_thread = threading.Thread(None, target=self.harvester, name="stats-harvester") self.harvester_thread.daemon = True self.harvester_thread.start() def register( self, app, name, _type, api_key="", secret="", http_proxy="", statsd_host="localhost", statsd_port=8125, statsd_prefix="shinken", statsd_enabled=False, statsd_interval=5, statsd_types=None, statsd_pattern=None, ): self.app = app self.name = name self.type = _type # kernel.io part self.api_key = api_key self.secret = secret self.http_proxy = http_proxy # local statsd part self.statsd_host = statsd_host self.statsd_port = statsd_port self.statsd_prefix = statsd_prefix self.statsd_enabled = statsd_enabled self.statsd_interval = statsd_interval if statsd_types is not None: self.statsd_types = [t.strip() for t in statsd_types.split(",") if t.strip()] if statsd_pattern is not None: self.statsd_pattern = statsd_pattern self.name_cache = {} if self.statsd_enabled: logger.debug( "Loading statsd communication with %s:%s.%s", self.statsd_host, self.statsd_port, self.statsd_prefix ) self.load_statsd() # Also load the proxy if need self.con.set_proxy(self.http_proxy) # Tells whether statsd is enabled and stats should be sent def is_statsd_enabled(self): return self.statsd_sock is not None and self.name and self.app is not None # Tells whether kernel.status.io exporter is enabled def is_shinkenio_enabled(self): return self.name and self.api_key and self.secret # Let be crystal clear about why I don't use the statsd lib in python: it's crappy. # how guys did you f**k this up to this point? django by default for the conf?? really?... # So raw socket are far better here def load_statsd(self): try: self.statsd_addr = (socket.gethostbyname(self.statsd_host), self.statsd_port) self.statsd_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) except (socket.error, socket.gaierror), exp: logger.error("Cannot create statsd socket: %s" % exp) return
class Stats(object): def __init__(self): self.name = '' self.type = '' self.app = None self.stats = {} # There are two modes that are not exclusive # first the kernel mode self.api_key = '' self.secret = '' self.http_proxy = '' self.con = HTTPClient(uri='http://kernel.shinken.io') # then the statsd one self.statsd_interval = 5 self.statsd_types = ['system', 'queue', 'perf'] self.statsd_sock = None self.statsd_addr = None self.statsd_types = 'system,object,queue,perf' self.statsd_pattern = None self.name_cache = {} def launch_reaper_thread(self): self.reaper_thread = threading.Thread(None, target=self.reaper, name='stats-reaper') self.reaper_thread.daemon = True self.reaper_thread.start() def launch_harvester_thread(self): self.harvester_thread = threading.Thread(None, target=self.harvester, name='stats-harvester') self.harvester_thread.daemon = True self.harvester_thread.start() def register(self, app, name, _type, api_key='', secret='', http_proxy='', statsd_host='localhost', statsd_port=8125, statsd_prefix='shinken', statsd_enabled=False, statsd_interval=5, statsd_types=None, statsd_pattern=None): self.app = app self.name = name self.type = _type # kernel.io part self.api_key = api_key self.secret = secret self.http_proxy = http_proxy # local statsd part self.statsd_host = statsd_host self.statsd_port = statsd_port self.statsd_prefix = statsd_prefix self.statsd_enabled = statsd_enabled self.statsd_interval = statsd_interval if statsd_types is not None: self.statsd_types = [ t.strip() for t in statsd_types.split(",") if t.strip() ] if statsd_pattern is not None: self.statsd_pattern = statsd_pattern self.name_cache = {} if self.statsd_enabled: logger.debug('Loading statsd communication with %s:%s.%s', self.statsd_host, self.statsd_port, self.statsd_prefix) self.load_statsd() # Also load the proxy if need self.con.set_proxy(self.http_proxy) # Tells whether statsd is enabled and stats should be sent def is_statsd_enabled(self): return (self.statsd_sock is not None and self.name and self.app is not None) # Tells whether kernel.status.io exporter is enabled def is_shinkenio_enabled(self): return (self.name and self.api_key and self.secret) # Let be crystal clear about why I don't use the statsd lib in python: it's crappy. # how guys did you f**k this up to this point? django by default for the conf?? really?... # So raw socket are far better here def load_statsd(self): try: self.statsd_addr = (socket.gethostbyname(self.statsd_host), self.statsd_port) self.statsd_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) except (socket.error, socket.gaierror), exp: logger.error('Cannot create statsd socket: %s' % exp) return