diff --git a/ops_bot/alertmanager.py b/ops_bot/alertmanager.py
index 4e1dba0..72207d5 100644
--- a/ops_bot/alertmanager.py
+++ b/ops_bot/alertmanager.py
@@ -30,11 +30,9 @@ def prometheus_alert_to_markdown(
logging.debug(f"alertmanager payload: {alert_data}")
for alert in alert_data["alerts"]:
- title = (
- alert["annotations"]["description"]
- if hasattr(alert["annotations"], "description")
- else alert["annotations"]["summary"]
- )
+ title = alert["labels"]["alertname"]
+ summary = alert["annotations"].get("summary")
+ description = alert["annotations"].get("description")
logging.debug(f"processing alert: '{title}'")
labels = alert.get("labels", {})
severity = labels.get("severity", "unknown")
@@ -46,14 +44,12 @@ def prometheus_alert_to_markdown(
plain = f"{status.upper()}[{severity}]: {title}"
header_str = f"{status.upper()}[{severity}]"
- url = alert.get("generatorURL")
- if url and url != "":
- title_linked = f"[{title}]({url})"
- else:
- title_linked = title
formatted = (
- f"{header_str}: {title_linked}"
+ f"{header_str}: {title}"
)
+ if summary:
+ formatted += f" - {summary}"
+ plain += f" - {summary}"
label_strings = []
for label_name, label_value in labels.items():
logging.debug(f"got label: {label_name} = {label_value}")
@@ -64,7 +60,25 @@ def prometheus_alert_to_markdown(
label_strings.append((f"**{label_name.capitalize()}**: {label_value}"))
labels_final = ", ".join(label_strings)
plain += f" \n{labels_final}"
+ if description:
+ formatted += f"
Description: {description}"
+ plain += f" \n{description}"
+
formatted += f"
{labels_final}"
+ generatorURL = alert.get("generatorURL")
+ runbookURL = alert["annotations"].get("runbook_url")
+ dashboardURL = alert.get("dashboardURL")
+ silenceURL = alert.get("silenceURL")
+ actions = []
+ if silenceURL:
+ actions.append(f"[🔕 Mute]({silenceURL})")
+ if runbookURL:
+ actions.append(f"[📗 Runbook]({runbookURL})")
+ if dashboardURL:
+ actions.append(f"[📈 Dashboard]({dashboardURL})")
+ if generatorURL:
+ actions.append(f"[🔍 Inspect]({generatorURL})")
+ formatted += "
" + " | ".join(actions)
messages.append((plain, formatted))
return messages
diff --git a/tests/test_alertmanager.py b/tests/test_alertmanager.py
index 0fa0999..0c2e274 100644
--- a/tests/test_alertmanager.py
+++ b/tests/test_alertmanager.py
@@ -55,11 +55,12 @@ def test_alertmanager():
plain, formatted = r[0]
print(formatted)
+
assert (
"FIRING" in plain
and "Instance" in plain
and "webserver.example.com" in plain
- and "Instance webserver.example.com down" in plain
+ and "THIS IS A TEST" in plain
and "critical" in plain
)
assert (