diff --git a/query_alertmanager.py b/query_alertmanager.py index 14a8d288087cef1ad1d444ce354957a7494b9d49..f8ff2ae5a7d744ae7a427dcc9455ab1192781956 100755 --- a/query_alertmanager.py +++ b/query_alertmanager.py @@ -27,34 +27,38 @@ def get_alerts(url, password, port=443, user="admin"): state = "unknown" try: - req = requests.get(api_url, auth=(user, password), params=query) - alerts_json = req.json() - for alert in alerts_json: - # pp = pprint.PrettyPrinter(indent=2) - # pp.pprint(alert) - - name = alert["labels"]["alertname"] - severity = alert["labels"]["severity"] - instance = alert["labels"].get("instance", "") - alert_state = alert["status"]["state"] - release_name = alert["labels"].get("release_name", "") - - if severity != "none" and alert_state != "suppressed": - count += 1 - alert_text = f"{name}: {instance}, {release_name} ({severity})" - alerts.append(alert_text) - - if count > 2: - state = "critical" - elif count > 0: - state = "warning" - elif count == 0: - state = "ok" - - summary = f"{count} alerts" - except Exception as e: - print(f"The error is: {e}") - traceback.print_exc() + print(f"{api_url}") + # req = requests.get(api_url, auth=(user, password), params=query) + with requests.get(api_url, auth=(user, password), params=query) as req: + alerts_json = req.json() + for alert in alerts_json: + # pp = pprint.PrettyPrinter(indent=2) + # pp.pprint(alert) + + name = alert["labels"]["alertname"] + severity = alert["labels"]["severity"] + instance = alert["labels"].get("instance", "") + alert_state = alert["status"]["state"] + release_name = alert["labels"].get("release_name", "") + + if severity != "none" and alert_state != "suppressed": + count += 1 + alert_text = f"{name}: {instance}, {release_name} ({severity})" + alerts.append(alert_text) + + if count > 2: + state = "critical" + elif count > 0: + state = "warning" + elif count == 0: + state = "ok" + + summary = f"{count} alerts" + except (requests.exceptions.HTTPError, + requests.exceptions.ConnectionError, + requests.exceptions.Timeout) as err: + print ("Exception catched: ",err) + # traceback.print_exc() summary = "Cant connect" state = "warning"