diff --git a/ttn-vegapulsair-exporter.py b/ttn-vegapulsair-exporter.py index 702921c..c7af465 100644 --- a/ttn-vegapulsair-exporter.py +++ b/ttn-vegapulsair-exporter.py @@ -5,15 +5,17 @@ from http.server import BaseHTTPRequestHandler, HTTPServer import paho.mqtt.client as mqtt -from datetime import datetime +from datetime import datetime, timedelta import threading import time import json import sys import config + scrape_healthy = True startTime = datetime.now() +lastMqttReception = datetime.now() node_metrics = list() mutex = threading.Lock() request_count = 0 @@ -40,9 +42,13 @@ class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): global request_count + global lastMqttReception + global scrape_healthy request_count = request_count + 1 #print("Request: " + self.path) if (self.path.startswith("/metrics")): + if (datetime.now() - lastMqttReception) > timedelta(hours=7): + scrape_healthy = False self.get_metrics() else: self.send_response(200) @@ -64,7 +70,7 @@ def update_metrics(payload, metadata): global mutex global scrape_healthy mutex.acquire() - scrape_healthy = True + scrape_healthy = False node_metrics.clear() if "Distance" in payload: @@ -123,6 +129,7 @@ def update_metrics(payload, metadata): print("set snr: " + str(float(metadata[0]["snr"]))) node_metrics.append("snr " + str(float(metadata[0]["snr"]))) + scrape_healthy = True mutex.release() def on_connect(mqttc, obj, flags, rc): @@ -136,6 +143,7 @@ def on_message(mqttc, obj, msg): try: uplink_message = parsedJSON["uplink_message"] update_metrics(uplink_message["decoded_payload"], uplink_message["rx_metadata"]) + lastMqttReception = datetime.now() except: mutex.acquire() scrape_healthy = False