def __init__(self): # max 100 entries self.queue = Queue(100) # single worker Worker(self.queue).start() # metrics metrics = Metrics.getSharedInstance() self.spotCounter = CounterMetric() metrics.addMetric("wsprnet.spots", self.spotCounter)
def __init__(self): self.spots = [] self.spotLock = threading.Lock() self.uploader = Uploader() self.timer = None metrics = Metrics.getSharedInstance() self.dupeCounter = CounterMetric() metrics.addMetric("pskreporter.duplicates", self.dupeCounter) self.spotCounter = CounterMetric() metrics.addMetric("pskreporter.spots", self.spotCounter)
def pushDecode(self): band = "unknown" if self.band is not None: band = self.band.getName() name = "digiham.decodes.{band}.pocsag".format(band=band) metrics = Metrics.getSharedInstance() metric = metrics.getMetric(name) if metric is None: metric = CounterMetric() metrics.addMetric(name, metric) metric.inc()
def getMetric(self): band = "unknown" if self.band is not None: band = self.band.getName() name = "aprs.decodes.{band}.aprs".format(band=band) metrics = Metrics.getSharedInstance() metric = metrics.getMetric(name) if metric is None: metric = CounterMetric() metrics.addMetric(name, metric) return metric
def __init__(self, maxsize, workers): super().__init__(maxsize) metrics = Metrics.getSharedInstance() metrics.addMetric("decoding.queue.length", DirectMetric(self.qsize)) self.inCounter = CounterMetric() metrics.addMetric("decoding.queue.in", self.inCounter) self.outCounter = CounterMetric() metrics.addMetric("decoding.queue.out", self.outCounter) self.overflowCounter = CounterMetric() metrics.addMetric("decoding.queue.overflow", self.overflowCounter) self.errorCounter = CounterMetric() metrics.addMetric("decoding.queue.error", self.errorCounter) self.workers = [self.newWorker() for _ in range(0, workers)]
def getMetric(self, category): if category not in self.metrics: band = "unknown" if self.band is not None: band = self.band.getName() name = "aprs.decodes.{band}.aprs.{category}".format( band=band, category=category) metrics = Metrics.getSharedInstance() self.metrics[category] = metrics.getMetric(name) if self.metrics[category] is None: self.metrics[category] = CounterMetric() metrics.addMetric(name, self.metrics[category]) return self.metrics[category]
def pushDecode(self, band): metrics = Metrics.getSharedInstance() bandName = "unknown" if band is not None: bandName = band.getName() name = "js8call.decodes.{band}.JS8".format(band=bandName) metric = metrics.getMetric(name) if metric is None: metric = CounterMetric() metrics.addMetric(name, metric) metric.inc()
def pushDecode(self, mode, band): metrics = Metrics.getSharedInstance() bandName = "unknown" if band is not None: bandName = band.getName() if mode is None: mode = "unknown" name = "wsjt.decodes.{band}.{mode}".format(band=bandName, mode=mode) metric = metrics.getMetric(name) if metric is None: metric = CounterMetric() metrics.addMetric(name, metric) metric.inc()
def __init__(self): pm = Config.get() super().__init__(pm["decoding_queue_length"]) self.workers = [] self._setWorkers(pm["decoding_queue_workers"]) self.subscriptions = [ pm.wireProperty("decoding_queue_length", self._setMaxSize), pm.wireProperty("decoding_queue_workers", self._setWorkers), ] metrics = Metrics.getSharedInstance() metrics.addMetric("decoding.queue.length", DirectMetric(self.qsize)) self.inCounter = CounterMetric() metrics.addMetric("decoding.queue.in", self.inCounter) self.outCounter = CounterMetric() metrics.addMetric("decoding.queue.out", self.outCounter) self.overflowCounter = CounterMetric() metrics.addMetric("decoding.queue.overflow", self.overflowCounter) self.errorCounter = CounterMetric() metrics.addMetric("decoding.queue.error", self.errorCounter)
def prometheusAction(self): metrics = Metrics.getSharedInstance().getFlatMetrics() def prometheusFormat(key, metric): value = metric.getValue() if isinstance(metric, CounterMetric): key += "_total" value = value["count"] elif isinstance(metric, DirectMetric): pass else: raise ValueError("Unexpected metric type for metric {}".format( repr(metric))) return "{key} {value}".format(key=key.replace(".", "_"), value=value) data = [ "# https://prometheus.io/docs/instrumenting/exposition_formats/" ] + [prometheusFormat(k, v) for k, v in metrics.items()] self.send_response("\n".join(data), content_type="text/plain; version=0.0.4")
def indexAction(self): data = json.dumps(Metrics.getSharedInstance().getHierarchicalMetrics()) self.send_response(data, content_type="application/json")
def __init__(self): self.clients = [] Metrics.getSharedInstance().addMetric("openwebrx.users", DirectMetric(self.clientCount)) super().__init__()