From 4349bcf09b5ab5d2b05890375596e5a9af6c7dc0 Mon Sep 17 00:00:00 2001 From: Mitch Ross Date: Sat, 25 Feb 2023 22:01:01 -0500 Subject: [PATCH] wip --- frigate/prometheus_exporter.py | 52 +++++++++++++++------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/frigate/prometheus_exporter.py b/frigate/prometheus_exporter.py index 66765ca79..3f57a8288 100644 --- a/frigate/prometheus_exporter.py +++ b/frigate/prometheus_exporter.py @@ -1,40 +1,34 @@ -from typing import Dict -import json -import re -import time -import random -from os import path -from urllib.request import urlopen -import yaml -from prometheus_client.core import GaugeMetricFamily, REGISTRY, CounterMetricFamily +from prometheus_client import CollectorRegistry +from prometheus_client.metrics_core import GaugeMetricFamily +from util.requester import Requester -def add_metric(metric, label, data, key, multiplier=1.0): - try: - string = str(data[key]) - value = float(re.findall(r'\d+', string)[0]) - metric.add_metric([label], value * multiplier) - except (KeyError, TypeError, IndexError): - pass - -class FrigateCollector(object): - - def __init__ (self, metricsobject, dataobject): - self.metricsobject = metricsobject - self.dataobject = dataobject +def setupRegistry(): + myregistry = CollectorRegistry() + myregistry.register(CustomCollector()) + return myregistry +class CustomCollector(): + def __init__(self): + self.service_unavailable_url = "https://httpstat.us/503" + self.ok_url = "https://httpstat.us/200" def collect(self): + server_unavailable_requester = Requester(self.service_unavailable_url) + ok_requester = Requester(self.ok_url) + server_unavailable_response = server_unavailable_requester.get_request() + ok_response = ok_requester.get_request() -class PromMetricsClass: + url_up_gauge = GaugeMetricFamily('sample_external_url_up', 'Help text', labels=['url']) + url_response_ms_gauge = GaugeMetricFamily('sample_external_url_response_ms', 'Help text', labels=['url']) - def __init__(self): - self.metrics = dict() + url_up_gauge.add_metric([server_unavailable_response.url], server_unavailable_response.up_or_down) + url_response_ms_gauge.add_metric([server_unavailable_response.url], server_unavailable_response.response_ms) -class PromDataClass: + url_up_gauge.add_metric([ok_response.url], ok_response.up_or_down) + url_response_ms_gauge.add_metric([ok_response.url], ok_response.response_ms) - def __init__(self): - self.values_in = dict() - self.values_out = dict() + yield url_up_gauge + yield url_response_ms_gauge \ No newline at end of file