CREATE TABLE `def_alert` (
`Alert` char(255) NOT NULL,
`Package` char(255) NOT NULL,
`Module` VARCHAR(255) DEFAULT NULL,
`Workflow` char(255) DEFAULT NULL,
`AlertSMS` char(255) DEFAULT NULL,
`AlertEmail` char(255) DEFAULT NULL,
`AlertBroadcast` char(255) DEFAULT NULL,
`Description` text DEFAULT NULL,
`TriggerCooldown` int(11) DEFAULT NULL,
`Rank` int(11) DEFAULT NULL,
`TriggerSql` text DEFAULT NULL,
`LocalActionSql` text DEFAULT NULL,
`AlertValueSql` text DEFAULT NULL,
`AlertNote` text DEFAULT NULL,
`ActionSql` text DEFAULT NULL,
`Alertdetailurl` text DEFAULT NULL,
`infrastructure` char(1) DEFAULT NULL,
`ActiveCron` char(2) DEFAULT NULL,
`remoteconnection` char(255) DEFAULT NULL,
`guid` char(255) DEFAULT NULL,
`LastCheck` datetime DEFAULT NULL,
`HealthCheckSql` text DEFAULT NULL,
`LastTrigger` datetime DEFAULT NULL,
`Active` char(2) DEFAULT 'Y',
`Severity` enum('CRITICAL','HIGH','MEDIUM','LOW','INFO') DEFAULT 'MEDIUM' COMMENT 'Alert severity level',
`Priority` int(11) DEFAULT 50 COMMENT 'Priority within severity (lower = higher priority)',
`ImpactArea` varchar(100) DEFAULT NULL COMMENT 'System area impacted (DATABASE, API, etc)',
`EscalationEnabled` char(1) DEFAULT 'N' COMMENT 'Enable escalation for unacknowledged alerts',
`EscalationMinutes` int(11) DEFAULT 15 COMMENT 'Minutes before first escalation',
`EscalationLevel1` varchar(255) DEFAULT NULL COMMENT 'First escalation targets',
`EscalationLevel2` varchar(255) DEFAULT NULL COMMENT 'Second escalation targets',
`EscalationLevel3` varchar(255) DEFAULT NULL COMMENT 'Third escalation targets',
`EscalationPersonGuid1` char(50) DEFAULT NULL COMMENT 'PersonGuid for first escalation contact',
`EscalationPersonGuid2` char(50) DEFAULT NULL COMMENT 'PersonGuid for second escalation contact',
`EscalationPersonGuid3` char(50) DEFAULT NULL COMMENT 'PersonGuid for third escalation contact',
`MaxTriggersPerHour` int(11) DEFAULT 10 COMMENT 'Maximum triggers per hour',
`ExponentialBackoff` char(1) DEFAULT 'N' COMMENT 'Use exponential backoff for cooldown',
`BackoffMultiplier` decimal(3,1) DEFAULT 2.0 COMMENT 'Backoff multiplier',
`NotificationChannels` text DEFAULT NULL COMMENT 'JSON config for notification channels',
`RunbookUrl` varchar(500) DEFAULT NULL COMMENT 'Link to runbook/playbook',
PRIMARY KEY (`Alert`, `Package`),
KEY `idx_package` (`Package`),
KEY `idx_active` (`Active`),
KEY `idx_severity` (`Severity`, `Priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE={collation};
CREATE TABLE `track_alert` (
`Guid` char(50) NOT NULL,
`Alert` char(255) NOT NULL,
`Package` char(255) NOT NULL,
`AlertNote` text DEFAULT NULL,
`AlertTriggerTime` datetime DEFAULT NULL,
`check_server` char(255) DEFAULT NULL,
`AcknowledgedBy` varchar(100) DEFAULT NULL COMMENT 'User who acknowledged',
`AcknowledgedByPersonGuid` char(50) DEFAULT NULL COMMENT 'PersonGuid who acknowledged',
`AcknowledgedAt` datetime DEFAULT NULL COMMENT 'Time of acknowledgment',
`ResolvedBy` varchar(100) DEFAULT NULL COMMENT 'User who resolved',
`ResolvedByPersonGuid` char(50) DEFAULT NULL COMMENT 'PersonGuid who resolved',
`ResolvedAt` datetime DEFAULT NULL COMMENT 'Time of resolution',
`ResolutionNotes` text DEFAULT NULL COMMENT 'Resolution details',
`TimeToAcknowledge` int(11) DEFAULT NULL COMMENT 'Seconds to acknowledge',
`TimeToResolve` int(11) DEFAULT NULL COMMENT 'Seconds to resolve',
`EscalationLevel` int(11) DEFAULT 0 COMMENT 'Current escalation level (0-3)',
`Severity` enum('CRITICAL','HIGH','MEDIUM','LOW','INFO') DEFAULT NULL COMMENT 'Severity at trigger time',
PRIMARY KEY (`Guid`, `Alert`, `Package`),
KEY `idx_alert_package` (`Alert`, `Package`),
KEY `idx_trigger_time` (`AlertTriggerTime`),
KEY `idx_package` (`Package`),
KEY `idx_unacknowledged` (`AcknowledgedBy`, `AlertTriggerTime`),
KEY `idx_severity` (`Severity`, `AlertTriggerTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE={collation};
CREATE TABLE `def_alert_metric` (
`Package` varchar(100) NOT NULL COMMENT 'Package identifier',
`Module` VARCHAR(255) DEFAULT NULL,
`CheckTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp of the check execution',
`CheckGuid` varchar(36) NOT NULL COMMENT 'Unique GUID for this check run',
`CheckServer` varchar(255) DEFAULT NULL COMMENT 'Server that performed the check',
`AlertsChecked` int(11) DEFAULT 0 COMMENT 'Number of alerts evaluated in this check',
`AlertsTriggered` int(11) DEFAULT 0 COMMENT 'Number of alerts that fired',
`AlertsPassed` int(11) DEFAULT 0 COMMENT 'Number of alerts that passed',
`ElapsedSeconds` decimal(10,3) DEFAULT NULL COMMENT 'Total time taken for check run in seconds',
`AvgTriggerSqlTime` decimal(10,3) DEFAULT NULL COMMENT 'Average TriggerSql execution time in seconds',
`MaxTriggerSqlTime` decimal(10,3) DEFAULT NULL COMMENT 'Maximum TriggerSql execution time in seconds',
`MemoryUsageMB` decimal(12,2) DEFAULT NULL COMMENT 'Peak memory usage during check in megabytes',
`CheckSuccess` char(1) DEFAULT 'Y' COMMENT 'Y/N - Whether check run succeeded',
`ErrorMessage` text DEFAULT NULL COMMENT 'Error message if check failed',
`TriggeredAlerts` text DEFAULT NULL COMMENT 'Comma-separated list of alerts that fired',
`RemoteCheck` char(1) DEFAULT 'N' COMMENT 'Y/N - Whether this was a remote check',
PRIMARY KEY (`Package`, `CheckTime`, `CheckGuid`),
KEY `idx_check_time` (`CheckTime`),
KEY `idx_success` (`CheckSuccess`),
KEY `idx_package_recent` (`Package`, `CheckTime`),
KEY `idx_triggered` (`AlertsTriggered`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE={collation} COMMENT='Performance metrics for alert check executions';
¶ def_alert_maintenance
CREATE TABLE `def_alert_maintenance` (
`MaintenanceGuid` varchar(36) NOT NULL,
`Package` varchar(255) NOT NULL,
`Module` VARCHAR(255) DEFAULT NULL,
`AlertPattern` varchar(255) DEFAULT NULL COMMENT 'Alert name pattern (NULL = all alerts)',
`StartTime` datetime NOT NULL,
`EndTime` datetime NOT NULL,
`CreatedBy` varchar(100) DEFAULT NULL,
`Reason` text DEFAULT NULL,
`Active` char(1) DEFAULT 'Y',
PRIMARY KEY (`MaintenanceGuid`),
KEY `idx_active_time` (`Active`, `StartTime`, `EndTime`),
KEY `idx_package` (`Package`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE={collation} COMMENT='Alert maintenance windows';
CREATE TABLE `def_alert_dependency` (
`ParentAlert` varchar(255) NOT NULL,
`ChildAlert` varchar(255) NOT NULL,
`Package` varchar(255) NOT NULL,
`Module` VARCHAR(255) DEFAULT NULL,
`SuppressChild` char(1) DEFAULT 'Y' COMMENT 'Suppress child if parent fires',
`Description` text DEFAULT NULL,
PRIMARY KEY (`ParentAlert`, `ChildAlert`, `Package`),
KEY `idx_child` (`ChildAlert`, `Package`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE={collation} COMMENT='Alert dependencies for suppression';
SELECT
Alert, HOUR(AlertTriggerTime), COUNT(*) AS Checks,
SUM(if(AlertNote = "PASS",0,1)) AS Fails,
floor( SUM(if(AlertNote = "PASS",1,0)) / COUNT(*) * 100) AS Uptime
FROM track_alert
GROUP BY Alert, HOUR(AlertTriggerTime)
INSERT INTO track_alert
(Guid,Alert,AlertNote,AlertTriggerTime, Package,Check_Server,Severity)
VALUES
('{uuid}','{alert}','{alert_note}'
,now(),'{package}','{check_server}','{severity}')
UPDATE def_Alert
SET LastTrigger = now()
WHERE
Alert = '{alert}'
AND Package = '{package}'
SELECT * FROM def_Alert
WHERE Active = 'Y'
AND Package in ('SYSTEM','CORE','{package}','{archetype}')
SELECT min(time_to_sec(timediff(NOW(),coalesce(LastTrigger,date_sub(now(),interval 96 HOUR)))))
AS LastTrigger from def_Alert
WHERE Active = 'Y' and Package in ('SYSTEM','CORE','{package}','{archetype}')
SELECT Alert, coalesce(ActiveCron,''), RemoteConnection, coalesce(package,'CORE') as alert_package
FROM def_Alert
WHERE
{last_trigger} > coalesce(TriggerCooldown * 60,60)
AND Package in ('SYSTEM','{core}','{package}','{archetype}')
AND Active = 'Y'
ORDER BY Rank
SELECT * FROM def_Alert
WHERE
Alert = '{alert}'
AND Package in ('SYSTEM', '{core}', '{package}', '{archetype}')
INSERT IGNORE INTO
def_Workflow (Package, WorkflowName)
VALUES
('{package}','{workflow}')
UPDATE def_Alert
SET LastCheck = now()
WHERE
Alert = '{alert}'
AND Package = '{package}'
DELETE FROM track_alert
WHERE
DATEDIFF(NOW(), AlertTriggerTime) > 7
SELECT Alert, RemoteConnection, coalesce(RemotePackage,Package) AS Package
FROM def_alert_remoteconnection
WHERE Package IN ('{package}','{archetype}')
AND ACTIVE = 'Y' and not Package in ('CORE')
SELECT
Alert,Package,Workflow,AlertSMS,AlertEmail,AlertBroadcast,Description,
TriggerCooldown,Rank,coalesce(TriggerSql,''),
coalesce(LocalActionSql,''),coalesce(AlertValueSql,''),AlertNote,
coalesce(ActionSql,''),Alertdetailurl,ActiveCron,coalesce(remoteconnection,''),
coalesce(guid,'')
FROM def_alert
UPDATE def_Alert SET guid = "{guid}"
WHERE
Alert = '{alert}' and Package = '{package}'
INSERT IGNORE INTO def_Alert
(
Alert,Package,Workflow,AlertSMS,AlertEmail,AlertBroadcast,Description,
TriggerCooldown,Rank,TriggerSql,LocalActionSql,AlertValueSql,AlertNote,
ActionSql,Alertdetailurl,ActiveCron,remoteconnection,guid
)
VALUES
(
'{alert}','{package}','{workflow}','{alert_sms}','{alert_email}','{AlertBroadcast}','{Description}',
'{trigger_cooldown}','{rank}','{trigger_sql}',
'{local_action_sql}','{alert_value_sql}','{alert_note}',
'{action_sql}','{alertdetailurl}','{active_cron}','{rconn}','{alert_guid}'
)
¶ check_maintenance_window
SELECT COUNT(*) FROM def_alert_maintenance
WHERE Package IN ('ALL', '{package}')
AND (AlertPattern IS NULL OR '{alert}' LIKE AlertPattern)
AND NOW() BETWEEN StartTime AND EndTime
AND Active = 'Y'
SELECT COUNT(*) FROM def_alert_dependency d
JOIN track_alert t
ON d.ParentAlert = t.Alert
AND d.Package = t.Package
WHERE d.ChildAlert = '{alert}'
AND d.Package = '{package}'
AND d.SuppressChild = 'Y'
AND t.AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 1 HOUR)
AND t.AlertNote != 'PASS'
AND t.AcknowledgedBy IS NULL
SELECT COUNT(*) FROM track_alert
WHERE Alert = '{alert}'
AND Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 1 HOUR)
AND AlertNote != 'PASS'
SELECT TIMESTAMPDIFF(SECOND, MAX(AlertTriggerTime), NOW())
FROM track_alert
WHERE Alert = '{alert}'
AND Package = '{package}'
AND AlertNote != 'PASS'
SELECT COUNT(*) FROM track_alert
WHERE Alert = '{alert}'
AND Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 1 HOUR)
UPDATE track_alert
SET AcknowledgedBy = '{user}',
AcknowledgedByPersonGuid = {person_guid},
AcknowledgedAt = NOW(),
TimeToAcknowledge = TIMESTAMPDIFF(SECOND, AlertTriggerTime, NOW())
WHERE Guid = '{guid}'
AND AcknowledgedBy IS NULL
UPDATE track_alert
SET ResolvedBy = '{user}',
ResolvedByPersonGuid = {person_guid},
ResolvedAt = NOW(),
TimeToResolve = TIMESTAMPDIFF(SECOND, AlertTriggerTime, NOW()),
ResolutionNotes = '{notes}'
WHERE Guid = '{guid}'
SELECT Alert, Package FROM track_alert WHERE Guid = '{guid}'
SELECT t.Guid, t.Alert, t.Package, t.EscalationLevel,
d.EscalationLevel1, d.EscalationLevel2, d.EscalationLevel3,
TIMESTAMPDIFF(MINUTE, t.AlertTriggerTime, NOW()) as age_minutes,
d.EscalationMinutes, d.Severity
FROM track_alert t
JOIN def_alert d ON t.Alert = d.Alert AND t.Package = d.Package
WHERE t.AcknowledgedBy IS NULL
AND t.AlertNote != 'PASS'
AND d.EscalationEnabled = 'Y'
AND TIMESTAMPDIFF(MINUTE, t.AlertTriggerTime, NOW()) >= d.EscalationMinutes
UPDATE track_alert
SET EscalationLevel = {level}
WHERE Guid = '{guid}'
SELECT DISTINCT t1.Alert, t1.Package, t1.Guid
FROM track_alert t1
WHERE t1.AlertNote != 'PASS'
AND t1.AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND t1.ResolvedAt IS NULL
AND EXISTS (
SELECT 1 FROM track_alert t2
WHERE t2.Alert = t1.Alert
AND t2.Package = t1.Package
AND t2.AlertTriggerTime > t1.AlertTriggerTime
AND t2.AlertNote = 'PASS'
AND t2.AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 30 MINUTE)
)
SELECT COUNT(*) FROM track_alert
WHERE Alert = '{alert}'
AND Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 1 HOUR)
AND AlertNote != 'PASS'
SELECT AlertTriggerTime, AlertNote, AcknowledgedBy, ResolutionNotes
FROM track_alert
WHERE Alert = '{alert}' AND Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL 7 DAY)
AND AlertNote != 'PASS'
ORDER BY AlertTriggerTime DESC
LIMIT 5
SELECT RunbookUrl, Severity, ImpactArea
FROM def_alert
WHERE Alert = '{alert}' AND Package = '{package}'
SELECT AVG(AlertsTriggered), AVG(ElapsedSeconds)
FROM def_alert_metric
WHERE Package = '{package}'
AND CheckTime > DATE_SUB(NOW(), INTERVAL 24 HOUR)
SELECT COUNT(*)
FROM def_alert_metric
WHERE CheckTime < '{cutoff_date}'
DELETE FROM def_alert_metric
WHERE CheckTime < '{cutoff_date}'
LIMIT {batch_size}
SELECT
Package,
COUNT(*) as sample_size,
AVG(ElapsedSeconds) as mean_elapsed,
STDDEV(ElapsedSeconds) as std_elapsed,
AVG(AvgTriggerSqlTime) as mean_trigger_time,
STDDEV(AvgTriggerSqlTime) as std_trigger_time,
AVG(AlertsTriggered) as mean_triggered,
STDDEV(AlertsTriggered) as std_triggered,
AVG(MemoryUsageMB) as mean_memory,
STDDEV(MemoryUsageMB) as std_memory
FROM def_alert_metric
{where_clause}
AND CheckTime BETWEEN '{baseline_start}' AND '{baseline_end}'
GROUP BY Package
HAVING COUNT(*) >= 5
SELECT
AVG(ElapsedSeconds) as recent_elapsed,
AVG(AvgTriggerSqlTime) as recent_trigger_time,
AVG(AlertsTriggered) as recent_triggered,
AVG(MemoryUsageMB) as recent_memory,
COUNT(*) as recent_count
FROM def_alert_metric
WHERE Package = '{package}'
AND CheckSuccess = 'Y'
AND CheckTime >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
SELECT
Guid,
Alert,
Package,
AlertTriggerTime,
Severity,
TIMESTAMPDIFF(MINUTE, AlertTriggerTime, NOW()) as age_minutes,
AcknowledgedBy,
EscalationLevel
FROM track_alert
WHERE Package = '{package}'
AND ResolvedAt IS NULL
AND AlertNote != 'PASS'
ORDER BY AlertTriggerTime DESC
SELECT COUNT(*)
FROM track_alert
WHERE Package = '{package}'
AND ResolvedAt IS NULL
AND AcknowledgedBy IS NULL
AND AlertNote != 'PASS'
SELECT COUNT(*)
FROM track_alert
WHERE Package = '{package}'
AND ResolvedAt IS NULL
AND EscalationLevel > 0
AND AlertNote != 'PASS'
¶ get_active_maintenance_windows
SELECT
MaintenanceGuid,
Package,
AlertPattern,
StartTime,
EndTime,
Reason,
CreatedBy
FROM def_alert_maintenance
WHERE Package IN ('ALL', '{package}')
AND NOW() BETWEEN StartTime AND EndTime
AND Active = 'Y'
ORDER BY StartTime DESC
SELECT
Alert,
Package,
COUNT(*) as trigger_count,
MAX(AlertTriggerTime) as last_trigger,
Severity
FROM track_alert
WHERE Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {hours} HOUR)
AND AlertNote != 'PASS'
GROUP BY Alert, Package, Severity
ORDER BY trigger_count DESC
LIMIT {limit}
SELECT
AVG(TimeToResolve) as mttr_seconds,
COUNT(*) as sample_size
FROM track_alert
WHERE Package = '{package}'
AND ResolvedAt IS NOT NULL
AND TimeToResolve IS NOT NULL
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
SELECT
AVG(TIMESTAMPDIFF(SECOND, CheckTime, AlertTriggerTime)) as mttd_seconds,
COUNT(*) as sample_size
FROM track_alert t
JOIN def_alert_metric m ON t.Package = m.Package
AND m.CheckTime < t.AlertTriggerTime
AND m.CheckTime > DATE_SUB(t.AlertTriggerTime, INTERVAL 1 HOUR)
WHERE t.Package = '{package}'
AND t.AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
AND t.AlertNote != 'PASS'
SELECT
Severity,
COUNT(*) as total_alerts,
SUM(CASE
WHEN Severity = 'CRITICAL' AND TimeToAcknowledge <= 900 THEN 1
WHEN Severity = 'HIGH' AND TimeToAcknowledge <= 1800 THEN 1
WHEN Severity = 'MEDIUM' AND TimeToAcknowledge <= 7200 THEN 1
WHEN Severity = 'LOW' AND TimeToAcknowledge <= 28800 THEN 1
ELSE 0
END) as met_ack_sla,
SUM(CASE
WHEN Severity = 'CRITICAL' AND TimeToResolve <= 14400 THEN 1
WHEN Severity = 'HIGH' AND TimeToResolve <= 28800 THEN 1
WHEN Severity = 'MEDIUM' AND TimeToResolve <= 86400 THEN 1
WHEN Severity = 'LOW' AND TimeToResolve <= 259200 THEN 1
ELSE 0
END) as met_resolve_sla
FROM track_alert
WHERE Package = '{package}'
AND ResolvedAt IS NOT NULL
AND TimeToAcknowledge IS NOT NULL
AND TimeToResolve IS NOT NULL
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
GROUP BY Severity
SELECT
DATE(AlertTriggerTime) as alert_date,
COUNT(*) as total_triggers,
SUM(CASE WHEN Severity = 'CRITICAL' THEN 1 ELSE 0 END) as critical_count,
SUM(CASE WHEN Severity = 'HIGH' THEN 1 ELSE 0 END) as high_count,
SUM(CASE WHEN Severity = 'MEDIUM' THEN 1 ELSE 0 END) as medium_count,
SUM(CASE WHEN Severity = 'LOW' THEN 1 ELSE 0 END) as low_count
FROM track_alert
WHERE Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
AND AlertNote != 'PASS'
GROUP BY DATE(AlertTriggerTime)
ORDER BY alert_date DESC
SELECT
Alert,
AlertTriggerTime
FROM track_alert
WHERE Package = '{package}'
AND AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
AND AlertNote != 'PASS'
ORDER BY AlertTriggerTime ASC
SELECT
t1.Alert as first_alert,
t2.Alert as second_alert,
COUNT(*) as occurrence_count,
AVG(TIMESTAMPDIFF(MINUTE, t1.AlertTriggerTime, t2.AlertTriggerTime)) as avg_delay_minutes,
MIN(TIMESTAMPDIFF(MINUTE, t1.AlertTriggerTime, t2.AlertTriggerTime)) as min_delay_minutes,
MAX(TIMESTAMPDIFF(MINUTE, t1.AlertTriggerTime, t2.AlertTriggerTime)) as max_delay_minutes
FROM track_alert t1
JOIN track_alert t2
ON t1.Package = t2.Package
AND t1.Alert != t2.Alert
AND t2.AlertTriggerTime > t1.AlertTriggerTime
AND TIMESTAMPDIFF(MINUTE, t1.AlertTriggerTime, t2.AlertTriggerTime) BETWEEN 1 AND {max_delay_minutes}
WHERE t1.Package = '{package}'
AND t1.AlertTriggerTime > DATE_SUB(NOW(), INTERVAL {days} DAY)
AND t1.AlertNote != 'PASS'
AND t2.AlertNote != 'PASS'
GROUP BY t1.Alert, t2.Alert
HAVING COUNT(*) >= {min_occurrences}
ORDER BY occurrence_count DESC, avg_delay_minutes ASC
INSERT INTO def_alert_metric (
Package, CheckTime, CheckGuid, CheckServer,
AlertsChecked, AlertsTriggered, AlertsPassed,
ElapsedSeconds, AvgTriggerSqlTime, MaxTriggerSqlTime,
MemoryUsageMB, CheckSuccess, ErrorMessage,
TriggeredAlerts, RemoteCheck
) VALUES (
{package}, NOW(), {check_guid}, {check_server},
{alerts_checked}, {alerts_triggered}, {alerts_passed},
{elapsed_seconds}, {avg_trigger_sql_time}, {max_trigger_sql_time},
{memory_usage_mb}, {check_success}, {error_message},
{triggered_alerts}, {remote_check}
)
UPDATE def_alert
SET RunbookUrl = '{runbook_url}'
WHERE Alert = '{alert}'
AND Package = '{package}'