Skip to content

Weekly

See which Droplets are running hot each week

A Monday email with average CPU, memory and disk use for every Droplet, with anything above your limit flagged.

Runs
Weekly
Apps
DigitalOcean
AI
Not needed
Access
droplet:read, monitoring:read

Send this to your assistant

Create a ClickRuntime automation: every Monday at 8am, email me last week's average CPU, memory and disk use for each DigitalOcean Droplet and flag any above 80%.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

The first sign that a Droplet is undersized is usually a customer complaining about a slow page. The CPU may have been pinned at 95 percent for days, or the disk may have crept to 98 percent from log files, but nobody was looking at graphs for each of eleven servers. DigitalOcean records the metrics, yet reading them one Droplet at a time is a chore people skip.

Each week the automation lists your Droplets, pulls seven days of CPU, memory and disk metrics for each, and marks any that ran hot above the thresholds you set. You receive one email with a row per Droplet, named so you can find it in the control panel, and the troublemakers called out at the top.

It is aimed at small teams without dedicated monitoring, and at freelancers looking after several client servers.

What you get out of it

  • Full disks found before they crash

    A disk that is slowly filling shows up as a rising percentage in the weekly table. That gives you days to clean logs or attach a volume, instead of a midnight outage that turns into a slow, stressful restore.

  • Right-sizing based on evidence

    Droplets that sit at 5 percent CPU all week are candidates for a cheaper plan, while ones at 90 percent need more. The report gives you the data to act on either way, and the savings can be real when you run a dozen servers.

  • Misbehaving servers become obvious

    When one Droplet is consistently hotter than similar ones, it points at a runaway cron job, a missing cache or a misbehaving app. A weekly comparison makes the odd one out easy to see and turns a slow mystery into a to-do.

  • Monitoring without installing a stack

    There is no Prometheus or Grafana to run and patch. You get a useful picture of server health from the data DigitalOcean already collects, which keeps the effort low for a team that has no time for a monitoring project.

  • Evidence for upgrade requests

    Engineers asking for a bigger plan can attach a week of numbers, so budget owners can approve with confidence instead of guessing. The conversation moves from opinion to measurement, which usually shortens it.

How it works

What happens, step by step

  1. Every Monday ClickRuntime lists your DigitalOcean Droplets.

  2. It works out each one's average CPU, memory and disk use over the past week.

  3. Droplets above the limit you set are marked as high.

  4. The report arrives in your inbox with one line per Droplet.

Before it runs live

  • Connect DigitalOcean

What you get

RunsWeekly
See which Droplets are running hot each weektoday, 9:00Succeeded
Email · Droplet resourcesdb-01 (HIGH): CPU 34%, memory 86%, disk 61% web-01: CPU 22%, memory 48%, disk 40%

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other DigitalOcean steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
get_a_weekly_droplet_resource_report.pyexample
import time
from clickruntime import on_trigger, credentials, http, notify

DO = "https://api.digitalocean.com/v2"

def do(method, path, **kwargs):
    resp = http.request(method, f"{DO}{path}", headers={"Authorization": f"Bearer {credentials.secret('DIGITALOCEAN_TOKEN')}"}, **kwargs)
    resp.raise_for_status()
    return resp.json() if resp.content else {}

def series(metric, host, **extra):
    end = int(time.time())
    result = do("GET", f"/monitoring/metrics/droplet/{metric}", params={"host_id": host, "start": end - 7 * 86400, "end": end, **extra})
    return [[float(v) for _, v in r["values"]] for r in result["data"]["result"]]

def avg(xs):
    return sum(xs) / len(xs) if xs else 0

@on_trigger
def run(event):
    lines = []
    for d in do("GET", "/droplets", params={"per_page": 200})["droplets"]:
        host = d["id"]
        idle = sum(s[-1] - s[0] for s in series("cpu", host, mode="idle"))
        cpu = max(0.0, 100 * (1 - idle / (7 * 86400 * d["vcpus"])))
        mem = 100 * (1 - avg(series("memory_available", host)[0]) / avg(series("memory_total", host)[0]))
        disk = 100 * (1 - avg(series("filesystem_free", host)[0]) / avg(series("filesystem_size", host)[0]))
        flag = " (HIGH)" if max(cpu, mem, disk) > 80 else ""
        lines.append(f"{d['name']}{flag}: CPU {cpu:.0f}%, memory {mem:.0f}%, disk {disk:.0f}%")
    notify.email_me("Droplet resources last week", "\n".join(lines))
    return {"droplets": len(lines)}

FAQ

Common questions

Do Droplets need the monitoring agent installed?
Memory and disk metrics come from the DigitalOcean metrics agent, which is installed by default on new Droplets but may be missing on older ones. CPU is reported without it, so a Droplet lacking the agent may show gaps in the memory and disk columns rather than wrong numbers.
What counts as running hot?
You decide the thresholds, for example CPU above 80 percent or disk above 85 percent averaged over the week. Anything over those lines is flagged in the email, and you can set separate limits for CPU, memory and disk. Alerts are only as useful as the numbers you pick, so start with a looser limit.
Will it cover Droplets across all my teams or projects?
It covers what the API token can see, which is the team that owns the token. Separate tokens are normal for separate DigitalOcean teams, so you would add one for each team you want included, and the results can still be combined into a single weekly email.
What permissions does it need?
droplet:read, monitoring:read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “See which Droplets are running hot each week” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.