Weekly DigitalOcean waste audit into Linear tickets
Every Monday, find idle Droplets, unused volumes, and old snapshots in DigitalOcean, file each fix as a Linear ticket, and recap the total savings in Slack.
Integrations
DigitalOcean
Linear
Slack
Type
Categories
- Engineering
- Finance
Every Monday at 8am, audit my DigitalOcean account for wasted spend, turn each meaningful finding into a Linear ticket, and post a short recap to Slack. Before you start, read these settings from the top of this prompt so they stay easy to change: the idle CPU threshold (default: Droplets sitting consistently under 20% CPU, and treat under 30% average memory as a secondary signal of an oversized Droplet), the Linear team to file tickets in (default team: Infrastructure), and the Slack channel for the recap (default: #infra-costs). Skip any resource whose name or tags include do-not-touch.
First, call List All Droplets to inventory every Droplet with its size, region, and monthly price. For each Droplet that is not tagged do-not-touch, call Retrieve Droplet Metrics to pull roughly the last 14 days of CPU, plus memory where available. Flag Droplets that sit consistently under the idle CPU threshold as idle or oversized: an idle box that could be powered down or destroyed, or an oversized one that should be resized to a smaller plan. Use the plan price to estimate the rough monthly savings (the full plan price if it can be shut down, or the difference to the next smaller plan if it should be downsized).
Next, call List All Block Storage Volumes and find volumes that are not attached to any Droplet (an empty droplet_ids list). Unattached volumes still bill at about $0.10 per GB per month, so estimate each one's monthly cost from its size and recommend detaching if needed and deleting it. Skip anything tagged do-not-touch.
Then call List All Snapshots to review Droplet and volume snapshots. Look for old snapshots piling up, for example snapshots older than 90 days or several redundant snapshots of the same resource. Snapshots bill at about $0.06 per GB per month, so estimate each one's monthly cost from its size and recommend deleting the ones that are clearly stale.
Reason about which resources are genuinely wasteful rather than flagging everything. Consider whether a quiet Droplet is actually a production box that is simply low-traffic, whether a volume might be reattached soon, and whether a snapshot is a deliberate long-term backup. Estimate the rough monthly savings for each genuine finding and rank them from highest to lowest savings.
For every meaningful finding, use Linear Create Issue in the configured team. Give it a clear title (for example, Downsize idle Droplet web-03, saves about $24/mo), and in the description include the resource details, the recommended action (downsize the Droplet, detach and delete the volume, or delete the snapshot), the supporting evidence (average CPU and memory over the window, or how long a volume or snapshot has been idle), and the estimated monthly savings. Do not take any destructive action yourself; the tickets are for a human to review and act on.
Finally, use the Slack Send a Message action to post a short recap to the configured channel. Lead with the total potential monthly savings across all findings, then list the top findings in ranked order with their individual savings and a reference to each Linear ticket. Keep it skimmable with a few bullet points rather than a wall of text. If nothing wasteful is found, post a brief note that no waste was detected this week.
What it does
- Scans your DigitalOcean account every Monday for the three biggest sources of waste: idle or oversized Droplets, storage volumes not attached to anything, and old snapshots piling up.
- Estimates the rough monthly savings for each issue and ranks them so you tackle the biggest wins first.
- Files a clear Linear ticket for every meaningful finding, with the recommended fix and the dollars it would save.
- Posts a short Slack recap with the total potential monthly savings.
What you’ll need
- A DigitalOcean account with the resources you want to monitor.
- A Linear workspace, with a team to file the tickets in.
- A Slack workspace and a channel for the weekly recap.
How to customize it
- Change the idle threshold (the default flags Droplets that stay under about 20% CPU).
- Pick which Linear team the tickets go to and which Slack channel gets the recap.
- Change the day and time it runs (Monday morning by default).
- Protect anything you never want flagged by tagging it do-not-touch.
Use cases
- AI Reports
- Notifications & Alerts
- Research & Monitoring