32 lines
1.9 KiB
JavaScript
32 lines
1.9 KiB
JavaScript
|
|
var status = data.status || 'unknown';
|
||
|
|
var emoji = status === 'firing' ? '🔴' : (status === 'resolved' ? '🟢' : '🟡');
|
||
|
|
var title = data.title || ('[' + status.toUpperCase() + '] Grafana Alert');
|
||
|
|
var alerts = data.alerts || [];
|
||
|
|
var lines = [emoji + ' ' + title];
|
||
|
|
var htmlParts = ['<b>' + emoji + ' ' + title + '</b>'];
|
||
|
|
for (var i = 0; i < alerts.length && i < 5; i++) {
|
||
|
|
var a = alerts[i];
|
||
|
|
var labels = a.labels || {};
|
||
|
|
var ann = a.annotations || {};
|
||
|
|
var name = labels.alertname || '';
|
||
|
|
var summary = ann.summary || ann.description || '';
|
||
|
|
var instance = labels.instance || labels.job || '';
|
||
|
|
var severity = labels.severity || '';
|
||
|
|
var aStatus = a.status || '';
|
||
|
|
var genURL = a.generatorURL || '';
|
||
|
|
var aEmoji = aStatus === 'resolved' ? '🟢' : '🔴';
|
||
|
|
if (alerts.length > 1) {
|
||
|
|
var alertLine = aEmoji + ' ' + (name || 'Alert') + (severity ? ' [' + severity + ']' : '') + (instance ? ' \u2014 ' + instance : '') + (summary ? ': ' + summary : '');
|
||
|
|
lines.push(alertLine);
|
||
|
|
htmlParts.push(alertLine + (genURL ? ' <a href="' + genURL + '">\u2197</a>' : ''));
|
||
|
|
} else {
|
||
|
|
if (name && name !== title) { lines.push('Alert: ' + name); htmlParts.push('Alert: ' + name); }
|
||
|
|
if (severity) { lines.push('Severity: ' + severity); htmlParts.push('Severity: ' + severity); }
|
||
|
|
if (instance) { lines.push('Instance: ' + instance); htmlParts.push('Instance: ' + instance); }
|
||
|
|
if (summary) { lines.push(summary); htmlParts.push(summary); }
|
||
|
|
if (genURL) { lines.push('View: ' + genURL); htmlParts.push('<a href="' + genURL + '">View in Grafana</a>'); }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (alerts.length === 0 && data.message) { lines.push(data.message); htmlParts.push(data.message); }
|
||
|
|
if (alerts.length > 5) { var more = '(+' + (alerts.length - 5) + ' more alerts)'; lines.push(more); htmlParts.push('<i>' + more + '</i>'); }
|
||
|
|
result = { version: 'v2', plain: lines.join('\n'), html: htmlParts.join('<br>'), msgtype: 'm.notice' };
|