NASA's aerospace safety advisory panel recently published estimates nobody upstairs wanted to hear, and Musk publicly disputed the panel's lunar launch numbers. But buried in the coverage is a warning that should land harder with anyone who runs IT than any launch-date argument: the watchdog flagged that retiring the Falcon and Dragon vehicles before a replacement is proven could leave US access to orbit without a backup.
Whatever you think of the estimates, the structural point belongs on every IT manager's whiteboard: a system with a single working path to recovery is not resilient. It is lucky. And in most IT operations, that single path is a human being. Monitoring detects the problem, an email goes out, a phone buzzes, and a person does the actual fixing — at 2 AM, from memory, over VPN. That human is your Falcon 9. If they are asleep, on PTO, or buried in the ticket queue, you have no access to orbit, and the incident burns until they surface.
There is a second lesson in the story too: the numbers themselves are disputed. IT runs on disputed numbers as well — thresholds nobody trusts, 'that alert is always a false positive,' 'it usually clears itself.' Teams argue about predictions while nothing changes the outcome. The fix is not better estimates. It is removing human latency from the detection-to-resolution path entirely, and proving every automated change on a small group before it touches the fleet.
That is self-healing IT. Here is why the current model fails, and how to fix it this quarter.
The Problem: You Bought Detection, Not Resolution
The human is the remediation engine
Classic scenario: it is 2:47 AM and SQL01's C: drive crosses 96%. Your monitoring tool does exactly what it was designed to do — it sends an alert. Then it goes quiet and waits for a human. The on-call tech stirs at 3:05, is on VPN by 3:12, and by 3:20 he has found the culprit: a SQL transaction log that ballooned to 80 GB because a maintenance job silently failed last week. The actual fix — shrink the log, restart the agent — takes 90 seconds. He is back in bed at 3:40.
Detection to resolution: 53 minutes. Time spent actually fixing: roughly two. Everything else was human latency — waking up, authenticating, remembering, diagnosing. And if he had slept through the buzz, the issue surfaces at 9 AM as an accounting user who cannot save a spreadsheet, and a 3 AM non-event becomes a business-hours incident with an audience.
Alert fatigue turns detection into noise
Multiply that night across every noisy alert, and you get the pattern every sysadmin knows: alert emails get filtered into a folder nobody reads, because most of them describe problems that either self-resolve or cannot be acted on at 2 AM anyway. Then the threshold debates start — 'bump disk alerts to 95%, that one is always noise' — and now real problems drown next to the noise you created. NASA's panel and management are disputing estimates; your team is disputing thresholds. In both cases, once the numbers stop meaning anything, the genuine risk slips through while everyone argues about the forecast.
Runbook knowledge lives in one person's head
The transaction-log fix lives in one senior engineer's memory. Your runbook documentation is a wiki page from 2019 that says 'see Dave.' When Dave is on holiday, mean time to repair doubles, and junior techs escalate issues Dave would close in four minutes. Tribal knowledge is not a runbook, and a runbook that requires a human to read it at 3 AM is only marginally better.
When teams do automate, they automate a disaster
The fear that keeps shops manual is earned. Everyone has seen the cleanup script that was tested on one machine, pushed to 400 endpoints, and deleted live user data. Or the 'quick' agent upgrade rolled out fleet-wide on a Friday that broke check-ins across the estate — leaving technicians unable to remotely fix the outage the upgrade itself caused. When your rollout strategy is 'everything at once and pray,' one bad script becomes a fleet-wide outage, the team concludes automation cannot be trusted, and the humans stay in the loop forever. Exhausted, resentful, and paged at 2 AM.
Tool sprawl makes the loop impossible to close
In most environments, the tools that could close the loop are strangers. Monitoring (PRTG, Zabbix, Nagios) detects. The RMM (ConnectWise, NinjaOne, Datto) can execute anything — but it is deaf by default and does not know a condition fired unless a human tells it. The helpdesk (Freshservice, Jira Service Management, your PSA) records the outcome — after a human types it in. Closing detection → diagnosis → fix → documentation means one person shuttling context across three or four interfaces, every single time. No wonder tickets get written from memory two days later and the SLA report is fiction.
Why do these gaps exist? Because the architecture demands them. Monitoring platforms were built as dashboards — observe, threshold, notify — with action bolted on, if at all. RMM platforms execute but do not watch conditions continuously. Helpdesks are systems of record, not systems of action. Vendors sell the integrations separately, and those integrations sync tickets, not actions. The loop needs a human because none of the tools were designed to close it.
What this actually costs
- MTTA in the tens of minutes, because the alert goes to a person, not to a system that can act.
- MTTR in hours for problems whose actual fix takes seconds.
- On-call burnout and attrition. Nothing kills morale faster than being woken for a 90-second fix you have performed eleven times before.
- Repeat incidents. The same condition recurs weekly because nobody has time to fix the root cause between pages.
- SLA reporting you cannot defend, because timing data lives in the monitoring tool and resolution evidence lives somewhere else.
How AlertMonitor Closes the Loop
Runbooks attach to alert conditions — not to people
In AlertMonitor, remediation is attached directly to the alert condition. When 'C: drive above 90% for 5 minutes' fires on any managed endpoint, the attached runbook executes automatically: clear disk space, rotate logs, restart the stalled service, or trigger a webhook into whatever else you run. A verification step then re-checks the condition. If it cleared, the incident resolves itself and a fully documented ticket appears in the integrated helpdesk — script output, timestamps, before-and-after values — before any human is involved. If verification fails, that is when a human gets paged, and the page includes everything the automation already learned: what was tried, what the output was, the current state of the machine.
Old workflow: alert email (0:00) → human notices (0:15 to 8 hours) → VPN and diagnose (0:25) → manual fix (0:28) → ticket typed from memory (days later).
AlertMonitor workflow: condition matched (0:00) → runbook executes (0:01) → verified resolved, ticket auto-created with evidence (0:03) → human reads an FYI with their morning coffee.
The 53-minute incident becomes a three-minute one, and it happened while everyone was asleep.
Canary deployment monitoring makes automation trustworthy
Every script and agent update in AlertMonitor can roll out through canary deployment monitoring. The change goes to a test group first — a handful of IT-owned machines or a small percentage of the fleet — and AlertMonitor watches the canaries: agent check-ins, service health, script exit codes, crash signals. If the canary group stays healthy through the soak window, staged rollout continues. If the canaries degrade, rollout halts automatically, and the blast radius is five machines instead of four hundred.
This is the mechanism that lets you automate with confidence: the first machine to feel a bad script is never your entire customer base. For MSPs, it is the difference between pushing to a client's whole site and pushing to two pilot machines, validating, then continuing — with the validation done by the platform instead of a tech babysitting a spreadsheet.
One loop, one record
Because detection, execution, and ticketing live in the same platform, the loop closes without human shuttling: alert condition → runbook → verified result → auto-created ticket with the full timeline → linked to the endpoint's history of patches, previous incidents, and its position on the network topology map. SLA reporting is generated from the same data as the remediation itself, so it is accurate by construction. And every automated fix is documented with its output, so 'see Dave' becomes a searchable library of proven runbooks the whole team — and every client — benefits from.
Practical Steps: Start Self-Healing This Week
Step 1: Mine your history for repeat offenders
Pull the last 90 days of alert-generated tickets and count the top recurring conditions. In nearly every environment the list is the same: disk space, one flaky Windows service, print servers, log pressure. Pick the top three. They are high-volume, well understood, and the fix is already known — perfect first runbooks.
Step 2: Build a guarded service-recovery script
The golden rule of self-healing scripts: verify, and fail loudly. Exit codes matter — AlertMonitor treats a non-zero exit as runbook failure and triggers escalation, so build that in:
$name = 'Spooler'
$svc = Get-Service -Name $name -ErrorAction SilentlyContinue
if ($svc -and $svc.Status -ne 'Running') {
Write-Output "$(Get-Date -Format o): $name is $($svc.Status). Attempting start."
Start-Service -Name $name -ErrorAction Stop
Start-Sleep -Seconds 10
$svc.Refresh()
if ($svc.Status -eq 'Running') {
Write-Output "$(Get-Date -Format o): $name recovered. Self-heal successful."
exit 0
}
else {
Write-Output "$(Get-Date -Format o): $name still $($svc.Status). Escalating to human."
exit 1
}
}
exit 0
Attach that to a 'Print Spooler stopped for more than 2 minutes' condition and the weekly 'the printer is down' ticket from accounts stops existing.
Step 3: Make disk pressure self-resolving
The single highest-value runbook in most Windows estates. This clears the safe stuff — temp files, recycle bins, the Windows Update download cache (which safely re-downloads as needed) — and reports before and after:
$minFreePercent = 15
Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType=3' | ForEach-Object {
$freePct = [math]::Round(($_.FreeSpace / $_.Size) * 100, 1)
if ($freePct -lt $minFreePercent) {
Write-Output "$($_.DeviceID) at $freePct% free. Running cleanup."
Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item 'C:\Windows\Temp\*' -Recurse -Force -ErrorAction SilentlyContinue
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
Stop-Service wuauserv -ErrorAction SilentlyContinue
Remove-Item 'C:\Windows\SoftwareDistribution\Download\*' -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv -ErrorAction SilentlyContinue
$after = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DeviceID='$($_.DeviceID)'"
$afterPct = [math]::Round(($after.FreeSpace / $after.Size) * 100, 1)
Write-Output "After cleanup: $afterPct% free."
if ($afterPct -lt $minFreePercent) { exit 1 } # still tight — escalate
}
}
exit 0
Note the design: the script does not get clever with user data. It reclaims known-safe space and escalates if that is not enough. Human judgment stays reserved for the cases that need it.
Step 4: Do the same for Linux log pressure
Log accumulation is the most common disk-full on Linux servers, and it is fully automatable:
#!/bin/bash
# Reclaim disk when the root filesystem runs hot
THRESHOLD=85
USAGE=$(df / --output=pcent | tail -1 | tr -dc '0-9')
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo "$(date -Is): root at ${USAGE}% — starting cleanup"
journalctl --vacuum-time=7d
find /var/log -name "*.gz" -mtime +14 -delete
find /var/log -name "*.[0-9]" -mtime +14 -delete
find /var/log/myapp -name "*.log" -size +500M -mtime +1 -exec truncate -s 0 {} \;
AFTER=$(df / --output=pcent | tail -1 | tr -dc '0-9')
echo "$(date -Is): root now at ${AFTER}%"
[ "$AFTER" -ge "$THRESHOLD" ] && exit 1 # still full — escalate
fi
exit 0
Again: a non-zero exit means AlertMonitor pages a human with the full script output attached — diagnosis included, mystery not.
Step 5: Never roll automation without a canary
Before any new runbook or agent update goes fleet-wide:
- Pick 3–5 pilot machines — IT-owned VMs plus a couple of representative endpoints. Never only your cleanest test box; you will learn nothing about real-world variance.
- Roll out to the pilot group in AlertMonitor and set a soak window: 24–48 hours for scripts, longer for agent versions.
- Watch the canaries — agent check-in rate, service health, script exit codes.
- Promote to staged fleet rollout only when the pilot is clean, and let AlertMonitor auto-halt if canary health degrades mid-rollout.
A quick verification pass across the canary group before promotion:
$canary = @('PC-PILOT-01', 'PC-PILOT-02', 'SRV-TEST-01')
foreach ($pc in $canary) {
$svc = Get-Service -ComputerName $pc -Name 'AlertMonitorAgent' -ErrorAction SilentlyContinue
$status = if ($svc) { $svc.Status } else { 'MISSING' }
'{0}: agent = {1}' -f $pc, $status
}
Five lines, and the difference between 'it worked on my machine' and 'it is safe for 400 machines.'
Step 6: Redefine what a page means
Once your top recurring conditions self-heal, change the notification policy: automated resolutions produce a ticket and an FYI digest, not a page. Pages are reserved for runbook failures and conditions that have no runbook yet. Within a quarter, most teams find after-hours page volume drops to a fraction — and the pages that remain are the ones that genuinely need a human brain.
The Takeaway
Back to NASA. The safety panel's deeper point was never about launch dates — it is that you do not retire your only working path to orbit before the replacement is proven. Flip it around for IT: your proven path to resolution should not be a person's phone, either. Attach the known fix to the alert condition, verify every automated result, prove each new automation on a canary group before it touches the fleet, and save your humans for the genuinely hard ten percent.
That is proactive IT as the norm, not the goal — and it is exactly what AlertMonitor is built to make routine.
Related Resources
AlertMonitor Self-Healing & Proactive IT AlertMonitor Platform Overview Book a Demo Self-Healing & Proactive IT Resources
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.