From 920f0a69d94e5702ae2d77ed4c9e731a716e4020 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Thu, 25 Nov 2021 13:22:35 +0100 Subject: [PATCH] implement service timeout check --- server.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server.py b/server.py index 5c959ca..01811b3 100755 --- a/server.py +++ b/server.py @@ -14,6 +14,8 @@ from sqlalchemy.sql import func import sqlalchemy from flask_sqlalchemy import SQLAlchemy +import pytimeparse.timeparse as timeparse + app = flask.Flask("Icinga Report In Gateway") app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.sqlite' app.config['JSON_CONFIG_FILE'] = 'services.json' @@ -69,6 +71,18 @@ def additionalDates(): if not status: response = flask.Response("", 200, json=buildReponseDict(status, service=service)) else: + if status.status == "OK": + timeParsed = datetime.datetime.from_timestamp(status.timestamp) + delta = datetime.datetime.now() - timeParsed + timeout = timeparse.timeparse(serviceObj.timeout) + if not status.timestamp == 0 and timeout < delta: + status.info_text = "Service {} overdue since {}".format(service, delta.hours) + if timeout/delta > 0.9 or (delta-timeout).hours < 12: + status.status = "WARNING" + else: + status.status = "CRITICAL" + + response = flask.Response("", 200, json=buildReponseDict(status)) # finalize and return response #