Merge pull request #3071 from mospell/feat/better_infrastructure_notifications

Feat: Add link to Infrastructure Details for Notifications
This commit is contained in:
Alexander Holliday authored and GitHub committed 2025-11-28 11:52:04 -08:00
commit 1e3ee23120
2 files changed
+12 -4

No files matched your search

+1
View File
@@ -173,6 +173,7 @@ export const initializeServices = async ({ logger, envSettings, settingsService
const notificationUtils = new NotificationUtils({
stringService,
emailService,
settingsService,
});
const notificationService = new NotificationService({
@@ -3,9 +3,10 @@ const SERVICE_NAME = "NotificationUtils";
class NotificationUtils {
static SERVICE_NAME = SERVICE_NAME;
constructor({ stringService, emailService }) {
constructor({ stringService, emailService, settingsService }) {
this.stringService = stringService;
this.emailService = emailService;
this.settingsService = settingsService;
}
get serviceName() {
@@ -101,6 +102,8 @@ class NotificationUtils {
const metrics = networkResponse?.payload?.data;
const { cpu: { usage_percent: cpuUsage = -1 } = {}, memory: { usage_percent: memoryUsage = -1 } = {}, disk = [] } = metrics;
const { clientHost } = this.settingsService.getSettings();
const alerts = {
cpu: cpuThreshold !== -1 && cpuUsage > cpuThreshold ? true : false,
memory: memoryThreshold !== -1 && memoryUsage > memoryThreshold ? true : false,
@@ -113,12 +116,13 @@ class NotificationUtils {
{ name: "Monitor", value: monitor.name, inline: true },
{ name: "URL", value: monitor.url, inline: false },
];
const goToIncidentField = { name: `Go to incident`, value: `${clientHost}/infrastructure/${monitor._id}` };
const formatDiscordAlert = {
cpu: () => ({
title: "CPU alert",
description: `Your current CPU usage (${(cpuUsage * 100).toFixed(0)}%) is above your threshold (${(cpuThreshold * 100).toFixed(0)}%)`,
color: 15548997,
fields: monitorInfoFields,
fields: [...monitorInfoFields, goToIncidentField],
footer: { text: "Checkmate" },
}),
@@ -126,7 +130,7 @@ class NotificationUtils {
title: "Memory alert",
description: `Your current memory usage (${(memoryUsage * 100).toFixed(0)}%) is above your threshold (${(memoryThreshold * 100).toFixed(0)}%)`,
color: 15548997,
fields: monitorInfoFields,
fields: [...monitorInfoFields, goToIncidentField],
footer: { text: "Checkmate" },
}),
@@ -142,6 +146,7 @@ class NotificationUtils {
value: `${(d?.usage_percent * 100).toFixed(0)}%`,
inline: true,
})),
goToIncidentField,
],
}),
};
@@ -184,8 +189,10 @@ class NotificationUtils {
};
buildHardwareNotificationMessage = (alerts, monitor) => {
const { clientHost } = this.settingsService.getSettings();
const alertsHeader = [`Monitor: ${monitor.name}`, `URL: ${monitor.url}`];
const alertText = alerts.length > 0 ? [...alertsHeader, ...alerts] : [];
const alertFooter = [`Go to incident: ${clientHost}/infrastructure/${monitor._id}`];
const alertText = alerts.length > 0 ? [...alertsHeader, ...alerts, ...alertFooter] : [];
return alertText.map((alert) => alert).join("\n");
};
buildHardwareWebhookBody = (alerts, monitor) => {