Monitoring & Metrics
Keep an eye on your infrastructure with built-in metrics, configurable alerts, uptime checks, and shareable status pages -- all without external tools.
Metrics Dashboard
sh0 collects resource usage metrics from every container and the host system. The metrics dashboard provides real-time and historical views of CPU, memory, disk, and network usage.
Access metrics from two places:
- Server-level metrics -- Overall host resource usage across all containers. Navigate to Settings → Metrics.
- Service-level metrics -- Per-container usage. Open any service and click the Metrics tab.
CPU Metrics
CPU metrics show the percentage of available CPU cores in use. For containers with CPU limits, the chart also displays the limit as a reference line so you can see how close the container is to throttling.
Memory Metrics
Memory metrics display current RAM consumption, cache usage, and the configured limit. A container that consistently uses close to its memory limit may need a higher allocation or may have a memory leak.
- Used -- Active memory consumed by the process.
- Cache -- File system cache (can be reclaimed by the OS).
- Limit -- The configured memory cap.
Disk & Network
Disk metrics show total and used space on the host filesystem. Network metrics track inbound and outbound traffic per container in bytes per second.
Metric Retention
Metrics are stored in sh0's internal SQLite database with automatic downsampling to keep storage requirements low:
| Time Range | Resolution | Retention |
|---|---|---|
| Last 1 hour | 10 seconds | 1 hour |
| Last 24 hours | 1 minute | 24 hours |
| Last 7 days | 5 minutes | 7 days |
| Last 30 days | 1 hour | 30 days |
Configuring Alerts
Alerts notify you when a metric crosses a threshold. You can set alerts on CPU usage, memory usage, disk space, and container health status.
- Navigate to Settings → Alerts.
- Click Add Alert.
- Select the metric type (CPU, memory, disk, or container status).
- Set the threshold value (e.g., CPU > 80%).
- Choose the duration -- how long the condition must persist before firing (e.g., 5 minutes).
- Select one or more notification channels.
- Click Save.
Notification Channels
sh0 supports multiple notification channels for alerts:
- Email -- Send alert emails to one or more addresses.
- Webhook -- POST a JSON payload to any URL (works with Slack, Discord, PagerDuty, etc.).
- Dashboard -- Show a notification banner in the sh0 dashboard (always enabled).
{
"alert": "CPU Usage High",
"service": "my-api",
"stack": "production",
"metric": "cpu_percent",
"value": 92.5,
"threshold": 80,
"status": "firing",
"timestamp": "2026-03-21T14:30:00Z"
}Uptime Monitoring
Uptime monitoring checks that your services are responding to HTTP requests. sh0 pings your configured endpoints at regular intervals and records response status and latency.
- Open your service and navigate to the Uptime tab.
- Click Add Check.
- Enter the URL to monitor (e.g.,
https://myapp.sh0.app/health). - Set the check interval (30 seconds, 1 minute, 5 minutes, etc.).
- Optionally set the expected status code (default: 200).
- Click Save.
When a check fails consecutively for the configured number of retries, sh0 triggers the associated alert. When the service recovers, a recovery notification is sent automatically.
Public Status Pages
Create a public status page to share your service uptime with users. Status pages show the current state and historical uptime of selected services.
- Navigate to Settings → Status Pages.
- Click Create Status Page.
- Choose a URL slug (e.g.,
status.yourdomain.com). - Select the services and uptime checks to display.
- Customize the page title and branding.
- Click Publish.