# The Real Cost of Not Monitoring Your App (And How to Fix It in an Hour)
I've worked with enough teams to see the pattern: monitoring gets added after something breaks in production. The database was running out of disk for three days before anyone noticed. The API was returning 500s for a specific user segment. The cronjob stopped running two weeks ago and nobody caught it until a customer complained.
These are all preventable. And setting up basic monitoring takes less than an hour.
What Actually Goes Wrong (And When)
The most common production problems I've seen:
Database disk full. PostgreSQL stops accepting writes when the disk hits 100%. It doesn't warn you. One day your app stops working and logs say "no space left on device."
Memory leaks. Your Node.js app slowly consumes more RAM over days. Eventually the container is killed and restarted. Users see intermittent errors.
Cronjob silently failing. The nightly data sync throws an unhandled exception. The job shows as failed in logs nobody is watching. The data drift compounds for weeks.
API latency creeping up. A database query that took 20ms now takes 800ms because a table grew and nobody added an index. Users are frustrated but don't say anything until your churn rate ticks up.
What to Monitor (The Minimum Viable Set)
You don't need a Datadog dashboard with 200 panels. You need:
- 1Uptime — Is the app responding at all? A simple HTTP check every minute.
- 2Error rate — What percentage of requests are returning 5xx? Alert if it goes above 1%.
- 3Response time — Alert if P95 latency exceeds your threshold (I use 2 seconds for web apps).
- 4Database disk usage — Alert at 75% so you have time to act.
- 5Cronjob success/failure — Alert immediately on any failed execution.
That's it. Five things. Start there.
Setting Up Monitoring on PandaStack
For apps hosted on PandaStack, this takes about 20 minutes:
Uptime monitoring:
Dashboard → Monitoring → Uptime Monitors → Add Monitor
Enter your app URL, set check interval to 1 minute, add your email or Slack webhook.
Error rate alerts:
Dashboard → Monitoring → Alerts → New Alert
Select your project, set condition to HTTP 5xx rate > 1%, notification to Slack.
Cronjob failure alerts:
Go to your cronjob → Alerts tab → add email or Slack notification for "on failure."
Database disk:
PandaStack managed databases include built-in disk usage alerts. Enable them under Databases → your database → Alerts.
Setting Up Uptime Monitoring for External Services
If your app calls external APIs, monitor those too. A third-party service going down will take your app down with it if you're not handling errors gracefully. At minimum, know when it happens so you can communicate with users.
Status Pages
If you have paying customers, add a public status page. It doesn't have to be fancy — even a simple page at status.yourapp.com that shows green/red for each service reduces support tickets dramatically when things go wrong.
The Slack Alert Format That Actually Works
When you set up Slack alerts, include:
- What's broken (specific service/endpoint)
- How long it's been broken
- Link to the relevant dashboard
- Link to recent deploy history
A vague "something is wrong" alert at 3am is only slightly better than no alert.
Monitoring is Not Optional
The teams that handle incidents well aren't lucky — they just know about problems before users do. Five monitors and two Slack alerts will put you in that category. It's the highest-ROI hour you'll spend this quarter.
Set it up at [dashboard.pandastack.io](https://dashboard.pandastack.io) → Monitoring.