mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 11:07:08 +00:00
62 lines
1.7 KiB
Python
Executable File
62 lines
1.7 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
"""
|
|
Send alerts if configured to do so
|
|
"""
|
|
|
|
import os
|
|
from glob import glob
|
|
import configuration
|
|
import requests
|
|
import argparse
|
|
|
|
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
|
|
}
|
|
|
|
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"]
|
|
}
|
|
|
|
send_alert(data)
|
|
|
|
print("Done")
|