import time import json import requests import prometheus_client as pc class CoronaExporter: def __init__(self): self.cases7_per_100k = pc.Gauge('cases7_per_100k', 'Faelle der letzten 7 Tage/100.000 EW', ['county']) self.cases = pc.Gauge('cases', 'Anzahl Faelle', ['county']) self.deaths = pc.Gauge('deaths', 'Anzahl Todesfaelle', ['county']) self.death_rate = pc.Gauge('death_rate', 'Sterberate', ['county']) self.cases_per_population = pc.Gauge('cases_per_population', 'Betroffenenrate', ['county']) self.cases7_bl_per_100k = pc.Gauge('cases7_bl_per_100k', 'Bundeslandweite Faelle der letzten 7 Tage/100.000 EW', ['county']) def get_metrics(self): r = requests.get('https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=*&returnGeometry=false&outSR=4326&f=json') j = json.loads(r.text) for lk in j['features']: name = lk['attributes']['county'] self.cases7_per_100k.labels(county=name).set(lk['attributes']['cases7_per_100k']) self.cases.labels(county=name).set(lk['attributes']['cases']) self.deaths.labels(county=name).set(lk['attributes']['deaths']) self.death_rate.labels(county=name).set(lk['attributes']['death_rate']) self.cases_per_population.labels(county=name).set(lk['attributes']['cases_per_population']) self.cases7_bl_per_100k.labels(county=name).set(lk['attributes']['cases7_bl_per_100k']) def run(self): pc.start_wsgi_server(9001) while True: self.get_metrics() time.sleep(120) if __name__ == "__main__": c = CoronaExporter() c.run()