Name
sn_em_connector.GrafanaPushConnectorScript
Description
Script to create events with new payload for Grafana Push Connector
Script
var GrafanaPushConnectorScript = Class.create();
GrafanaPushConnectorScript.prototype = {
initialize: function() {},
alerts: function(request, requestBody, params) {
var source_label = params['source_label'];
var sys_id = params['sys_id'];
var eventClass = params['event_class'];
var connectorTags = params['connector_tags'];
var payload = requestBody;
var alerts = payload.alerts;
var orgId = payload.orgId;
var responseBody = {};
responseBody.eventSysIds = [];
//if severity is passed in labels
var severity = {
'CRITICAL': '1',
'MAJOR': '2',
'MINOR': '3',
'WARNING': '4'
};
for (var i = 0; i < alerts.length; i++) {
var annotations = alerts[i].annotations;
var labels = alerts[i].labels;
var status = alerts[i].status;
var start_time = alerts[i].startsAt;
var end_time = alerts[i].endsAt;
var response, additional_info;
var event_GR = new sn_em_connector.PushConnectorUtil().createEventObject(source_label);
// set connector instance name as event class when it's provided
event_GR.event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : source_label;
if (annotations) {
if (annotations.description)
event_GR.description = annotations.description;
else if (annotations.summary)
event_GR.description = annotations.summary;
if (annotations.node)
event_GR.node = annotations.node.split(':')[0];
if (annotations.resource)
event_GR.resource = annotations.resource;
if (annotations.metric)
event_GR.metric_name = annotations.metric;
}
if (status) {
if (status == "firing") {
var configurations = new sn_em_connector.PushConnectorConfigurations();
configurations.applyConfigurations(event_GR, sys_id, connector_sys_id);
event_GR.resolution_state = 'New';
this.setTimeOfEvent(start_time, event_GR);
} else if (status == "resolved") {
event_GR.severity = "0";
event_GR.resolution_state = 'Closing';
this.setTimeOfEvent(end_time, event_GR);
}
}
//if csutomer provides labels for particular fields we will override them
if (labels) {
if (labels.type)
event_GR.type = labels.type;
if (labels.device && global.JSUtil.nil(event_GR.resource))
event_GR.resource = labels.device;
if (labels.instance && global.JSUtil.nil(event_GR.node))
event_GR.node = labels.instance.split(':')[0];
if (labels.severity)
if (global.JSUtil.notNil(severity[labels.severity.toUpperCase()]))
event_GR.severity = severity[labels.severity.toUpperCase()];
}
event_GR.message_key = orgId + "_" + alerts[i].fingerprint;
// Get alerts additional info
additional_info = new sn_em_connector.PushConnectorUtil().additionalInfo(alerts[i], request, false);
// Get common additional info from payload
for (var key in payload) {
if (key !== 'alerts') {
additional_info[key] = payload[key];
}
}
additional_info["startsAt"] = start_time;
additional_info["endsAt"] = end_time;
if (alerts[i].generatorURL)
additional_info["generatorURL"] = alerts[i].generatorURL;
if (alerts[i].silenceURL)
additional_info["silenceURL"] = alerts[i].silenceURL;
if (alerts[i].dashboardURL)
additional_info["dashboardURL"] = alerts[i].dashboardURL;
if (alerts[i].panelURL)
additional_info["panelURL"] = alerts[i].panelURL;
if (alerts[i].valueString)
additional_info["valueString"] = alerts[i].valueString;
// STRY55133117: update additional_info with connector tags and set event_class
if (typeof connector_tags !== 'undefined' && connector_tags) {
new PushConnectorInstanceUtils().updateAdditionalInfoWithConnectorTags(additional_info, connector_tags);
}
event_GR.additional_info = JSON.stringify(additional_info);
// Populate custom domain info
new sn_em_connector.PushConnectorUtil().populateDomain(sys_id, request, requestBody, event_GR);
response = new sn_em_connector.PushConnectorUtil().buildResponseBody(responseBody, event_GR);
}
return response;
},
//format : 2022-12-08T15:48:00Z
setTimeOfEvent: function(timestamp, event_GR) {
timestamp = timestamp.replace("Z", "+0000");
timestamp = timestamp.replace("T", " ");
event_GR.time_of_event = new GlideDateTime(timestamp);
},
type: 'GrafanaPushConnectorScript'
};
Sys ID
c765de70472bd15082d8ea32736d4387