Convox is a container-based PaaS that lets you deploy applications to AWS, GCP, or Azure using a single CLI command. It handles provisioning, load balancers, SSL, and rolling deploys — but once your app is live, you still need external monitoring to know when it goes down.
In this tutorial you'll set up end-to-end monitoring for Convox-deployed applications using Vigilmon — free tier, no credit card.
Why Convox apps need external monitoring
Convox abstracts away cloud infrastructure, which is great for deployment speed but can mask subtle availability problems:
- Rolling deploy failures — Convox replaces containers one at a time; a bad deploy can leave some instances healthy and others crashing, causing intermittent 5xx errors
- Load balancer health check gaps — Convox configures cloud load balancer health checks, but these only probe from inside the cloud region; they won't catch DNS or CDN failures upstream
- SSL certificate expiry — Convox manages SSL automatically but certificate renewal failures can cause HTTPS errors without triggering any internal alert
- Service port binding — a container that starts but fails to bind its port passes Convox's startup check but serves no traffic
External monitoring from Vigilmon probes your app the same way a real user would — from outside your cloud provider — catching failures that internal checks miss.
What you'll need
- An application deployed with Convox (
convox deploy) - Your app's public URL (from
convox servicesor your custom domain) - A free Vigilmon account
Step 1: Add a health endpoint to your app
Convox uses a convox.yml file to configure your app. Add a /health route to your application code before configuring monitoring.
For a Node.js/Express app:
app.get('/health', (req, res) => {
res.json({ status: 'ok', version: process.env.RELEASE });
});
For a Ruby on Rails app, add to config/routes.rb:
get '/health', to: proc { [200, {}, ['{"status":"ok"}']] }
Then configure the health check path in convox.yml:
services:
web:
build: .
port: 3000
health:
path: /health
interval: 5
timeout: 3
threshold: 2
The health block tells Convox's load balancer when to route traffic to a container. External Vigilmon monitoring runs independently of this internal check.
Step 2: Get your app's public URL
Find your app's endpoint:
convox services
Output:
SERVICE DOMAIN PORTS
web web.my-app.us-east-1.convox.site:443 443=>3000
Use this domain for your Vigilmon monitor, or set up a custom domain and use that.
Step 3: Set up HTTP monitoring in Vigilmon
- Log in to vigilmon.online and go to Monitors → New Monitor
- Choose HTTP / HTTPS as the type
- Set the URL to
https://web.my-app.us-east-1.convox.site/health - Set the check interval to 1 minute
- Under Expected response, set:
- Status code:
200 - (Optional) Response body contains:
"status":"ok"
- Status code:
- Save the monitor
Vigilmon probes your app from multiple regions. If a Convox rolling deploy goes wrong, an SSL certificate expires, or your cloud region has a partial outage, you'll get an alert within one check interval.
Step 4: Monitor SSL certificate health
Convox manages SSL/TLS automatically, but certificate issues still happen. Vigilmon's HTTPS monitor automatically verifies the certificate on every check and alerts you if it's invalid or close to expiry.
To add certificate expiry alerting:
- Edit your HTTP monitor in Vigilmon
- Enable SSL certificate expiry alerts (alerts you 14 days before expiry)
- Save
This gives you advance warning before a Convox certificate renewal fails.
Step 5: Set up TCP monitoring for databases
Convox can provision RDS or other managed databases alongside your app. Monitor their connectivity:
- In Vigilmon, go to Monitors → New Monitor
- Choose TCP Port as the type
- Enter your database hostname and port (from
convox resources infooutput) - Save the monitor
convox resources info postgres
# shows HOST, PORT for your RDS instance
Step 6: Configure webhook alerts
- Go to Alert Channels → Add Channel → Webhook
- Enter your Slack, Discord, or PagerDuty webhook URL
- Assign the channel to your monitors
For Convox deployments, alerts are especially useful right after a convox deploy — you can verify a successful rollout by watching monitor status in the minutes after deployment:
{
"monitor_name": "web /health",
"status": "down",
"url": "https://web.my-app.us-east-1.convox.site/health",
"started_at": "2024-05-01T14:30:00Z",
"duration_seconds": 60
}
Step 7: Create a public status page
- In Vigilmon, go to Status Pages → New Status Page
- Give it a name like "Production Status"
- Add your HTTP and TCP monitors
- Publish
Share the page in your app's footer and with your support team so downtime is visible without needing Convox CLI access.
Recommended monitor configuration for Convox apps
| Monitor | Type | Interval | Alert after |
|---------|------|----------|-------------|
| Web /health | HTTP | 1 min | 2 failures |
| Web homepage | HTTP | 5 min | 2 failures |
| Database port | TCP | 1 min | 1 failure |
| SSL certificate | HTTPS expiry | daily | 14 days before |
Summary
Convox makes cloud deployment simple, but it doesn't give you external visibility into whether your app is reachable from the real internet. Vigilmon adds that layer — monitoring from outside your cloud provider, verifying SSL, and alerting you within 60 seconds when something breaks. Set up your first monitor in five minutes and know immediately when a Convox deploy causes an outage.