Datto RMM Alert Management
Overview
Alerts are the primary notification mechanism in Datto RMM. They're generated by monitors when conditions are met - disk space low, service stopped, CPU high, etc. Each alert contains context-specific data based on the monitor type. This skill covers alert handling, the 25+ context types, and resolution workflows.
Key Concepts
Alert Structure
Every alert has:
- alertUid - Unique identifier for the alert
- alertType - Category of alert (Device Offline, Monitor, etc.)
- priority - Severity level (Critical, High, Moderate, Low, Information)
- alertContext - Type-specific data with
@classdiscriminator - timestamp - When the alert was raised (Unix milliseconds)
Alert Priorities
| Priority | Value | Description | Typical Response |
|---|---|---|---|
| Critical | Critical | Severe impact, immediate action | 15 minutes |
| High | High | Significant issue | 1 hour |
| Moderate | Moderate | Notable but manageable | 4 hours |
| Low | Low | Minor issue | 8 hours |
| Information | Information | Informational only | Best effort |
Alert States
| State | Description |
|---|---|
open | Active, requires attention |
resolved | Closed, issue addressed |
Field Reference
Alert Object
interface Alert {
// Identifiers
alertUid: string; // Unique alert ID
alertSourceInfo: AlertSource; // Source of the alert
// Device Info
deviceUid: string; // Device that generated alert
hostname: string; // Device hostname
// Classification
alertType: string; // "Monitor", "Device Offline", etc.
priority: AlertPriority; // Critical, High, Moderate, Low, Information
alertMessage: string; // Human-readable message
// Context (varies by @class)
alertContext: AlertContext; // Type-specific data
// Timestamps (Unix milliseconds)
timestamp: number; // When alert was raised
resolvedAt?: number; // When resolved (if resolved)
// Resolution
resolved: boolean;
resolvedBy?: string; // Who resolved it
resolution?: string; // Resolution notes
}
type AlertPriority = 'Critical' | 'High' | 'Moderate' | 'Low' | 'Information';
Alert Context Types
Datto RMM has 25+ alert context types, identified by the @class field. Each type has specific fields relevant to that monitor.
antivirus_ctx
Antivirus status and detection alerts.
interface AntivirusContext {
"@class": "antivirus_ctx";
avProduct: string; // "Windows Defender", "Webroot", etc.
avStatus: string; // "Enabled", "Disabled", "Out of Date"
avDefinitionDate: number; // Last definition update (Unix ms)
threatName?: string; // Name of detected threat
threatPath?: string; // File path of threat
scanType?: string; // "Full", "Quick", "Real-time"
lastScan?: number; // Last scan timestamp
}
Example Alert:
{
"alertMessage": "Antivirus definitions out of date",
"alertContext": {
"@class": "antivirus_ctx",
"avProduct": "Windows Defender",
"avStatus": "Out of Date",
"avDefinitionDate": 1707100000000
}
}
comp_script_ctx
Component script execution results.
interface ComponentScriptContext {
"@class": "comp_script_ctx";
componentName: string; // Script/component name
exitCode: number; // Process exit code
stdout: string; // Standard output
stderr: string; // Standard error
executionTime: number; // Duration in milliseconds
variables?: Record<string, string>; // Input variables
}
Example Alert:
{
"alertMessage": "Component 'Backup Check' failed with exit code 1",
"alertContext": {
"@class": "comp_script_ctx",
"componentName": "Backup Check",
"exitCode": 1,
"stdout": "Checking backup status...",
"stderr": "ERROR: No backup found in last 24 hours"
}
}
custom_snmp_ctx
SNMP monitoring alerts.
interface CustomSNMPContext {
"@class": "custom_snmp_ctx";
oid: string; // SNMP OID
value: string | number; // Current value
threshold: number; // Configured threshold
comparison: string; // "gt", "lt", "eq", etc.
snmpVersion: string; // "v1", "v2c", "v3"
}
disk_health_ctx
ESXi disk health monitoring.
interface DiskHealthContext {
"@class": "disk_health_ctx";
diskName: string; // Disk identifier
status: string; // "Healthy", "Warning", "Critical"
capacity: number; // Total capacity (bytes)
smartStatus?: string; // S.M.A.R.T. status
temperature?: number; // Disk temperature (Celsius)
}
eventlog_ctx
Windows Event Log monitoring.
interface EventLogContext {
"@class": "eventlog_ctx";
logName: string; // "Application", "System", "Security"
source: string; // Event source
eventId: number; // Event ID
eventType: string; // "Error", "Warning", "Information"
message: string; // Event message
timestamp: number; // Event timestamp
user?: string; // Associated user
computer?: string; // Computer name
}
Example Alert:
{
"alertMessage": "Event Log: BSOD detected",
"alertContext": {
"@class": "eventlog_ctx",
"logName": "System",
"source": "BugCheck",
"eventId": 1001,
"eventType": "Error",
"message": "The computer has rebooted from a bugcheck."
}
}
fan_ctx
ESXi fan status monitoring.
interface FanContext {
"@class": "fan_ctx";
fanName: string; // Fan identifier
status: string; // "OK", "Warning", "Critical"
rpm: number; // Current RPM
minRpm?: number; // Minimum threshold
}
fs_object_ctx
File/folder size monitoring.
interface FileSystemObjectContext {
"@class": "fs_object_ctx";
path: string; // File or folder path
size: number; // Current size (bytes)
threshold: number; // Size threshold (bytes)
comparison: string; // "gt", "lt"
isDirectory: boolean; // true for folders
fileCount?: number; // Number of files (for directories)
}
online_offline_status_ctx
Device online/offline status changes.
interface OnlineOfflineContext {
"@class": "online_offline_status_ctx";
status: string; // "offline", "online"
lastSeen: number; // Last check-in (Unix ms)
offlineDuration: number; // Minutes offline
previousStatus: string; // Status before change
}
Example Alert:
{
"alertMessage": "Device went offline",
"alertContext": {
"@class": "online_offline_status_ctx",
"status": "offline",
"lastSeen": 1707991200000,
"offlineDuration": 45,
"previousStatus": "online"
}
}
patch_ctx
Windows patch/update status.
interface PatchContext {
"@class": "patch_ctx";
patchCount: number; // Total pending patches
criticalCount: number; // Critical patches pending
importantCount: number; // Important patches pending
optionalCount: number; // Optional patches pending
lastScan: number; // Last patch scan (Unix ms)
rebootRequired: boolean; // Needs restart
failedPatches?: string[]; // KB numbers that failed
}
perf_disk_usage_ctx
Disk usage/space monitoring.
interface DiskUsageContext {
"@class": "perf_disk_usage_ctx";
drive: string; // "C:", "D:", etc.
usagePercent: number; // Current usage percentage
threshold: number; // Alert threshold percentage