DEV Community

Paul Crinigan
Paul Crinigan

Posted on

What DevOps Automation Cannot Do At 3am

Every ops team has a version of the same story. A Terraform module provisions the same stack every time. A GitHub Actions workflow runs the tests and ships on merge. A PagerDuty rule routes the alert to whoever is on call. All of it works. Then something wakes that person at 3am, and none of it helps, because the incident is not the kind of problem those tools were built for.

Where Deterministic Automation Ends

Rule based automation is excellent at the cases you already understood well enough to write down. If CPU stays above 90 percent for five minutes, scale up. If a health check fails three times, restart the pod. If the disk crosses 85 percent, run the cleanup job. That determinism is a feature, not a limitation, and it should stay exactly where it is.

The trouble is that rules break at the boundary the person writing them did not anticipate. A spike to 95 percent might be a legitimate burst that clears in thirty seconds, or it might be the first visible symptom of a leak that takes the service down in an hour. The correct response depends on what else changed, what shipped recently, and what the same metric did last Tuesday. A single threshold sees none of that, so it either fires constantly and gets muted, or it does not fire at all.

Meanwhile the volume keeps climbing. A hundred microservices on Kubernetes will produce millions of log lines an hour, thousands of metric series, and dozens of alerts a day, most of them duplicates or downstream symptoms of one root cause. Filtering that is cognitive work, and cognitive work does not scale by hiring, because coordination cost grows faster than the team.

What Makes It An Agent Instead Of A Dashboard

The line between a smart dashboard and an agent is action, not intelligence. A chatbot wired into your cluster can tell you the pod is crash looping because the liveness probe fails. An agent notices the crash loop, reads the pod logs, checks whether a config change landed just before it started, rolls that change back or widens the probe timing, confirms the pods stay healthy, and drops a summary in the incident channel before the on call engineer has finished reading the first alert.

That loop of observe, reason, act, verify is the whole distinction. It is also why the useful implementations look boring on the surface. They mostly read from tools you already run, Prometheus, Grafana, Datadog, CloudWatch, your deploy history, your ticket system, and then take small reversible actions in the same systems your engineers touch by hand today.

The Guardrails Come First

None of this argues for handing production to a model and going to bed. The teams doing it well start read only. The agent investigates, correlates, and writes up what it thinks happened, and a person still clicks the button. Once those write ups are consistently right, a narrow set of actions gets promoted to automatic, usually the reversible ones with a blast radius you can describe in one sentence: restart this deployment, scale that group, roll back to the previous image.

Everything else stays behind a human approval, and every action the agent takes gets logged the way a change ticket would be. The failure mode you are protecting against is not dramatic. It is an agent confidently fixing the wrong thing during a live incident and burying the real cause under its own changes.

Getting Concrete

If you want the longer version, we keep a full guide to AI agents for DevOps that walks through AIOps tooling, incident response, CI/CD, log analysis, infrastructure as code, Kubernetes operations and the cost side, along with what building your own actually involves.

The short takeaway: keep deterministic automation for the routine, and point agents at the ambiguous middle where your people are currently burning their nights. That is the one part of operations where reasoning, not scripting, is the scarce resource.

Top comments (0)