Docs/ Operations/ Monitoring & Metrics

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.
Server-level metrics dashboard -- showing CPU, memory, disk, and network charts with time range selector

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.

CPU usage chart -- showing a time series line graph with the container CPU limit displayed as a dashed line

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.

Disk usage bar and network I/O chart -- showing inbound and outbound traffic over time

Metric Retention

Metrics are stored in sh0's internal SQLite database with automatic downsampling to keep storage requirements low:

Time RangeResolutionRetention
Last 1 hour10 seconds1 hour
Last 24 hours1 minute24 hours
Last 7 days5 minutes7 days
Last 30 days1 hour30 days
Note
Metric data is stored locally on the server. If you need long-term metric retention or external monitoring, you can integrate with tools like Prometheus or Grafana by exposing the metrics endpoint.

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.

  1. Navigate to Settings → Alerts.
  2. Click Add Alert.
  3. Select the metric type (CPU, memory, disk, or container status).
  4. Set the threshold value (e.g., CPU > 80%).
  5. Choose the duration -- how long the condition must persist before firing (e.g., 5 minutes).
  6. Select one or more notification channels.
  7. Click Save.
Alert configuration form -- metric type selector, threshold slider, duration input, and notification channel checkboxes

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).
Webhook payload example
{
  "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"
}
Tip
To send alerts to Slack, create a Slack Incoming Webhook URL and add it as a webhook notification channel. sh0's alert payload works with Slack's expected format.

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.

  1. Open your service and navigate to the Uptime tab.
  2. Click Add Check.
  3. Enter the URL to monitor (e.g., https://myapp.sh0.app/health).
  4. Set the check interval (30 seconds, 1 minute, 5 minutes, etc.).
  5. Optionally set the expected status code (default: 200).
  6. Click Save.
Uptime monitoring dashboard -- showing uptime percentage, response time graph, and recent check results

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.

  1. Navigate to Settings → Status Pages.
  2. Click Create Status Page.
  3. Choose a URL slug (e.g., status.yourdomain.com).
  4. Select the services and uptime checks to display.
  5. Customize the page title and branding.
  6. Click Publish.
Warning
The e-mail subscription form only appears on a public status page when the instance can actually send mail (SMTP configured in Settings). Without SMTP the page is served without the form, rather than promising a confirmation e-mail that would never arrive.
Public status page -- showing service statuses (operational, degraded, outage) and a 90-day uptime history bar
Note
Status pages are served by sh0 itself through Caddy. You can point a custom domain at your status page by adding a CNAME record. SSL certificates are provisioned automatically.