Name
sn_sow_em.SOWAlertCommonUtilsSNC
Description
No description available
Script
var SOWAlertCommonUtilsSNC = Class.create();
SOWAlertCommonUtilsSNC.CORRELATION_GROUP = { //correlation group
NONE: '0',
PRIMARY: '1',
SECONDARY: '2',
BOTH: '3'
};
SOWAlertCommonUtilsSNC.GROUP = { //group reference
AUTOMATED: '1',
RULES_BASED: '2',
MANUAL: '3',
CMDB: '4',
CI_CLASS_BASED: '7',
TEXT: '8',
LOG_ANALYTICS: '9',
COMPONENT_BASED: '10',
TAG_CLUSTER: '11'
};
SOWAlertCommonUtilsSNC.CATEGORY = { //category (from extra_data)
LOG_ANALYTICS_GROUP: '1',
LOG_ANALYTICS_ALERT: '2',
READ_ONLY: '3'
};
SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY = {
STAND_ALONE_ALERT: 'STAND_ALONE_ALERT',
STAND_ALONE_LOG_ANALYTICS: 'STAND_ALONE_LOG_ANALYTICS',
GROUP_MEMBER_STAND_ALONE: 'GROUP_MEMBER_STAND_ALONE',
GROUP_MEMBER_LOG_ANALYTICS_STAND_ALONE: 'GROUP_MEMBER_LOG_ANALYTICS_STAND_ALONE',
GROUP_MEMBER_READ_ONLY: 'GROUP_MEMBER_READ_ONLY',
GROUP_MEMBER_COMPONENT_BASED: 'GROUP_MEMBER_COMPONENT_BASED',
GROUP_RULE_BASED: 'GROUP_RULE_BASED',
GROUP_MANUAL: 'GROUP_MANUAL',
GROUP_AUTOMATED: 'GROUP_AUTOMATED',
GROUP_CMDB: 'GROUP_CMDB',
GROUP_LOG_ANALYTICS: 'GROUP_LOG_ANALYTICS',
GROUP_COMPONENT_BASED: 'GROUP_COMPONENT_BASED',
GROUP_TEXT_BASED: 'GROUP_TEXT_BASED',
NONE: 'NONE',
GROUP_TAG_CLUSTER: 'GROUP_TAG_CLUSTER'
};
SOWAlertCommonUtilsSNC.ALERT_TYPE = (function(){
var obj = {};
// EM stand alone (not anomaly)
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.STAND_ALONE_ALERT] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.NONE,
group: [],
category: []
};
// Log analytics alert standalone
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.STAND_ALONE_LOG_ANALYTICS] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.NONE,
group: [],
category: [SOWAlertCommonUtilsSNC.CATEGORY.LOG_ANALYTICS_ALERT]
},
// EM standalone as a group member
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_MEMBER_STAND_ALONE] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.SECONDARY,
group: [SOWAlertCommonUtilsSNC.GROUP.AUTOMATED, SOWAlertCommonUtilsSNC.GROUP.RULES_BASED, SOWAlertCommonUtilsSNC.GROUP.MANUAL, SOWAlertCommonUtilsSNC.GROUP.CMDB, SOWAlertCommonUtilsSNC.GROUP.TEXT, SOWAlertCommonUtilsSNC.GROUP.TAG_CLUSTER],
category: []
},
// Log analytics alert standalone as a group member member
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_MEMBER_LOG_ANALYTICS_STAND_ALONE] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.SECONDARY,
group: [SOWAlertCommonUtilsSNC.GROUP.AUTOMATED, SOWAlertCommonUtilsSNC.GROUP.RULES_BASED, SOWAlertCommonUtilsSNC.GROUP.MANUAL, SOWAlertCommonUtilsSNC.GROUP.CMDB, SOWAlertCommonUtilsSNC.GROUP.TEXT, SOWAlertCommonUtilsSNC.GROUP.LOG_ANALYTICS, SOWAlertCommonUtilsSNC.GROUP.TAG_CLUSTER],
category: [SOWAlertCommonUtilsSNC.CATEGORY.LOG_ANALYTICS_ALERT]
};
// Read-only (member of component based)
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_MEMBER_READ_ONLY] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.SECONDARY,
group: [SOWAlertCommonUtilsSNC.GROUP.COMPONENT_BASED],
category: [SOWAlertCommonUtilsSNC.CATEGORY.READ_ONLY]
};
// Component-based as a group member
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_MEMBER_COMPONENT_BASED] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.BOTH,
group: [SOWAlertCommonUtilsSNC.GROUP.LOG_ANALYTICS],
category: [SOWAlertCommonUtilsSNC.CATEGORY.LOG_ANALYTICS_ALERT]
};
// Rule based/manual– primary
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_RULE_BASED] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.RULES_BASED],
category: []
};
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_MANUAL] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.MANUAL],
category: []
};
// Automated - Group
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_AUTOMATED] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.AUTOMATED,SOWAlertCommonUtilsSNC.GROUP.CI_CLASS_BASED],
category: []
};
// Tag Cluster - Group
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_TAG_CLUSTER] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.TAG_CLUSTER],
category: []
};
// CMDB - Group
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_CMDB] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.CMDB],
category: []
};
// Log analytics group
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_LOG_ANALYTICS] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.LOG_ANALYTICS],
category: [SOWAlertCommonUtilsSNC.CATEGORY.LOG_ANALYTICS_GROUP]
},
// Component-based
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_COMPONENT_BASED] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.COMPONENT_BASED],
category: [SOWAlertCommonUtilsSNC.CATEGORY.LOG_ANALYTICS_ALERT]
};
// Text based group
obj[SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.GROUP_TEXT_BASED] = {
correlation_group: SOWAlertCommonUtilsSNC.CORRELATION_GROUP.PRIMARY,
group: [SOWAlertCommonUtilsSNC.GROUP.TEXT],
category: []
};
return obj;
})();
SOWAlertCommonUtilsSNC.prototype = {
initialize: function() {
},
getAlertType: function(alertGr) {
if (!alertGr.isValidRecord())
return null;
var alertCorrelationGroup, alertGroupSource, alertParentGroupSource, relevantGroup, alertExtraDataCategory;
alertCorrelationGroup = alertGr.correlation_group+'';
alertGroupSource = alertGr.group_source+'';
alertParentGroupSource = alertGr.parent.getRefRecord().group_source+'';
relevantGroup = [SOWAlertCommonUtilsSNC.CORRELATION_GROUP.SECONDARY, SOWAlertCommonUtilsSNC.CORRELATION_GROUP.BOTH].indexOf(alertCorrelationGroup) > -1 ? alertParentGroupSource : alertGroupSource;
alertExtraDataCategory = alertGr.sn_extra_data.getRefRecord().category+'';
var alertTypes = SOWAlertCommonUtilsSNC.ALERT_TYPE;
var key, val;
var match = false, groupMatch = false, categoryMatch = false;
var matchedFieldCount = 0, matchedTypes = [], matchedTypeObj = {};
for (key in alertTypes) {
// Set initial values
match = false;
groupMatch = false;
categoryMatch = false;
matchedFieldCount = 0;
matchedTypeObj = {};
val = alertTypes[key];
if (val.correlation_group === alertCorrelationGroup) {
match = true;
matchedFieldCount++;
}
if (val.group.length > 0) {
groupMatch = val.group.indexOf(relevantGroup) > -1;
if (groupMatch) {
matchedFieldCount++;
}
match = match && groupMatch;
}
if (val.category.length > 0) {
categoryMatch = val.category.indexOf(alertExtraDataCategory) > -1;
if (categoryMatch) {
matchedFieldCount++;
}
match = match && categoryMatch;
}
if (match) {
matchedTypeObj.key = key;
matchedTypeObj.matchCount = matchedFieldCount;
matchedTypes.push(matchedTypeObj);
}
}
if (matchedTypes.length === 0) {
return SOWAlertCommonUtilsSNC.ALERT_TYPE_KEY.NONE;
} else if (matchedTypes.length === 1) {
return matchedTypes[0].key;
} else {
// Get best match based on max number of fields matched
// Example - SA_EM Alert Vs SA_Log analytics alert
// Sort the array in decreasing order of matchCount
matchedTypes = matchedTypes.sort(function(type1, type2) {
if (type1.matchCount > type2.matchCount)
return -1;
if (type1.matchCount < type2.matchCount)
return 1;
return 0;
});
return matchedTypes[0].key;
}
},
type: 'SOWAlertCommonUtilsSNC'
};
Sys ID
b97e71b10b1201105f02818393673a21