Name
sn_em_connector.EvtMgmtConnectorsCleanupEventsData
Description
sn_em_connector_event_data table cleanup
Script
var EvtMgmtConnectorsCleanupEventsData = Class.create();
EvtMgmtConnectorsCleanupEventsData.prototype = {
initialize: function() {},
type: 'EvtMgmtConnectorsCleanupEventsData'
};
EvtMgmtConnectorsCleanupEventsData.cleanUp = function() {
/*
* If Azure Bi-directional connector is Not Active
* Delete the records in sn_em_connector_event_data table in 2 days.
* taking 2 days if customer has disabled it temporarily, we should not clean up
*
* If Azure Bi-directional connector is Active
* If Alert is in closed state, then we will retain
* data for 7 days and can be customized by sn_em_connector.eventdata_closedevent_interval
* if we reopen a closed alert in 7 days then we will be able to reopen the corresponding closed alerts from Azure portal.
* if we reopen a closed alert after 7 days then we will NOT be able to
* reopen the corresponding closed alerts from Azure portal.
*
* If Alert is in open state, then we will retain the data for 30 days and can be customized by sn_em_connector.eventdata_openevent_interval
* If we want to close or acknowledge an opened servicenow alert in 30 days,
* we will be able to close/acknowledge all corresponding azure alerts on Azure portal.
* If we want to close or acknowledge an opened servicenow alert after 30 days,
* we will NOT be able to close/acknowledge all corresponding azure alerts on Azure portal.
*/
var startTime = new GlideDateTime();
var CLOSE_INTERVAL = parseInt(gs.getProperty('sn_em_connector.eventdata_closedevent_interval', 604800)); //default 7days. 7*24*60*60
var OPEN_INTERVAL = parseInt(gs.getProperty('sn_em_connector.eventdata_openevent_interval', 2592000)); //default 30 days. 30*24*60*60
var AZURE_INACTIVE_CLEANUP_INTERVAL = parseInt(gs.getProperty('sn_em_connector.eventdata_azure_inactive_cleanup_interval', 172800)); //default 2 days. 2*24*60*60
var connDefGr = new GlideRecord("em_connector_definition");
connDefGr.addQuery("name", "Azure Monitor");
connDefGr.query();
if (connDefGr.next()) {
var azureDef = connDefGr.getUniqueValue();
var connInstGr = new GlideRecord("em_connector_instance");
connInstGr.addQuery("connector_definition", azureDef);
connInstGr.addQuery("active", true);
connInstGr.query();
//If there is no active azure monitor conenctor delete azure data
if (!connInstGr.hasNext()) {
var azureInActiveEventDataGr = new GlideRecord("sn_em_connector_event_data");
var azurenow = new GlideDateTime();
azurenow.addSeconds(AZURE_INACTIVE_CLEANUP_INTERVAL * -1);
azureInActiveEventDataGr.addQuery("source", "Azure Monitor");
azureInActiveEventDataGr.addQuery("sys_updated_on", "<=", azurenow);
azureInActiveEventDataGr.query();
azureInActiveEventDataGr.deleteMultiple();
}
}
//keeping them outside Azure as we are soting oracle cloud event data also in this table.
if (parseInt(CLOSE_INTERVAL) > 0) {
var eventDataGr = new GlideRecord("sn_em_connector_event_data");
var now = new GlideDateTime();
now.addSeconds(CLOSE_INTERVAL * -1);
eventDataGr.addQuery("state", "IN", "Closed,ClosedAcknowledged,ClosedByEvent,ClosedByEventAcknowledged");
eventDataGr.addQuery("sys_updated_on", "<=", now);
eventDataGr.query();
eventDataGr.deleteMultiple();
}
if (parseInt(OPEN_INTERVAL) > 0) {
var eventDataOpenGr = new GlideRecord("sn_em_connector_event_data");
var opennow = new GlideDateTime();
opennow.addSeconds(OPEN_INTERVAL * -1);
eventDataOpenGr.addQuery("state", "IN", "New,NewAcknowledged,Reopen,ReopenAcknowledged");
eventDataOpenGr.addQuery("sys_updated_on", "<=", opennow);
eventDataOpenGr.query();
eventDataOpenGr.deleteMultiple();
}
var duration = (new GlideDateTime()).getNumericValue() - startTime.getNumericValue();
if (duration > 5000) {
// Write statistics only if the query took more then 5 seconds
_writeToPerfTable(alertsCount, duration);
}
var _writeToPerfTable = function(count, duration) {
var performanceStatsGr = new GlideRecord("sa_performance_statistics");
performanceStatsGr.setValue("type", "closeAlertsJob");
performanceStatsGr.setValue("count", count);
performanceStatsGr.setValue("duration", duration);
performanceStatsGr.insert();
};
};
Sys ID
056824655b713010ea1d1b800481c7b1