This commit is contained in:
Mitch Ross 2023-02-25 22:01:01 -05:00
parent bada7db290
commit 4349bcf09b

View File

@ -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