Files
dougal-software/bin/send_alert.py

62 lines
1.7 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/python3
"""
Send alerts if configured to do so
"""
import os
from glob import glob
import configuration
import requests
import argparse
2020-08-28 17:33:32 +02:00
def send_alert (data):
cfg = configuration.read()
try:
url = cfg["webhooks"]["alert"]["url"]
except KeyError:
print("Alerts endpoint not configured")
exit(1)
authkey = os.environ["GITLAB_ALERTS_AUTHKEY"] if "GITLAB_ALERTS_AUTHKEY" in os.environ else cfg["webhooks"]["alert"]["authkey"]
headers = {
"Authorization": "Bearer " + authkey
}
2020-08-28 17:33:32 +02:00
requests.post(url, headers=headers, json=data)
if __name__ == '__main__':
ap = argparse.ArgumentParser()
ap.add_argument("-t", "--title", required=True, default=None, help="The title of the incident.")
ap.add_argument("-d", "--description", required=False, default=None, help="A high-level summary of the problem.")
ap.add_argument("-s", "--service", required=False, default=None, help="The affected service.")
ap.add_argument("-l", "--severity", required=False, default="critical", help="The severity of the alert. Must be one of critical, high, medium, low, info, unknown. Default is critical.")
ap.add_argument("-I", "--stdin", required=False, default=None, help="Contents of standard input")
ap.add_argument("-O", "--stdout", required=False, default=None, help="Contents of standard output")
ap.add_argument("-E", "--stderr", required=False, default=None, help="Contents of standard error")
args = vars(ap.parse_args())
data = {
"title": args["title"],
"description": args["description"],
"service": args["service"],
"hosts": os.environ["HOST"],
"severity": args["severity"],
"input": args["stdin"],
"output": args["stdout"],
"error": args["stderr"]
}
2020-08-28 17:33:32 +02:00
send_alert(data)
print("Done")