Skip to main content

Monitoring

Sprintsail provides built-in observability through Grafana dashboards, structured log streaming, Prometheus metrics, and configurable alerting.

Grafana dashboards

Every organization gets a Grafana instance at https://grafana.{org}.sprintsail.com. Dashboards are pre-configured for:

  • App Overview --- request rate, error rate, latency (p50/p95/p99), active instances
  • Resource Usage --- CPU utilization, memory consumption, network I/O per instance
  • Service Health --- PostgreSQL connections, query latency, Redis hit rate, cache size
  • Deployment History --- deploy timeline, revision comparison, rollback events

Access Grafana with your Sprintsail credentials (SSO via Dex).

Logs

Stream logs in real time

ss logs my-app
2026-04-05T10:30:01Z [instance-1] INFO  Server started on port 8080
2026-04-05T10:30:02Z [instance-2] INFO Server started on port 8080
2026-04-05T10:30:05Z [instance-1] INFO GET / 200 12ms
2026-04-05T10:30:06Z [instance-1] WARN Slow query: 450ms

Filter logs

By instance:

ss logs my-app --instance instance-1

By time range:

ss logs my-app --since 1h
ss logs my-app --since 2026-04-05T10:00:00Z --until 2026-04-05T11:00:00Z

By log level:

ss logs my-app --level error

Search within logs:

ss logs my-app --grep "database connection"

Structured logging

Sprintsail parses JSON-formatted log lines automatically. If your app outputs structured JSON logs, fields are indexed and searchable in Grafana/Loki:

{"level":"info","msg":"request handled","method":"GET","path":"/api/users","status":200,"duration_ms":12}

Build logs

View logs from the most recent build:

ss logs my-app --build

Metrics

Sprintsail collects metrics via Prometheus and exposes them in Grafana. Default metrics collected for every app:

MetricDescription
http_requests_totalTotal HTTP requests by method, path, status
http_request_duration_secondsRequest latency histogram
container_cpu_usageCPU usage per instance
container_memory_usage_bytesMemory usage per instance
container_restarts_totalContainer restart count

Custom metrics

If your app exposes a Prometheus /metrics endpoint, Sprintsail scrapes it automatically:

ss app update my-app --metrics-path /metrics --metrics-port 9090

Custom metrics appear in Grafana alongside platform metrics.

Alerting

Configure alerts based on metrics thresholds.

Create an alert

ss alerts create my-app \
--metric error_rate \
--threshold 5 \
--window 5m \
--channel slack:#alerts

Built-in alert types

AlertTrigger
error_rateError percentage exceeds threshold
latency_p9595th percentile latency exceeds threshold (ms)
cpu_usageAverage CPU utilization exceeds threshold (%)
memory_usageAverage memory utilization exceeds threshold (%)
instance_downAn instance is unreachable
deploy_failedA deployment fails health checks

Notification channels

Alerts can be sent to:

# Slack
ss alerts channel add slack --webhook-url https://hooks.slack.com/services/T.../B.../xxx

# Email
ss alerts channel add email --address ops@example.com

# PagerDuty
ss alerts channel add pagerduty --integration-key abc123

# Generic webhook
ss alerts channel add webhook --url https://example.com/alerts

List and manage alerts

ss alerts list my-app
ss alerts delete my-app --alert alert-id

Default alerts

Every app is created with these default alerts (configurable):

  • Instance down --- triggers after 1 minute, notifies org admins via email
  • Deploy failed --- triggers immediately, notifies the deploying user

Health checks

Sprintsail performs health checks to determine instance readiness:

ss app update my-app --health-check-path /health --health-check-interval 10s

Failed health checks trigger automatic instance restarts and alert notifications.

Log retention

PlanLog retentionMetric retention
Starter24 hours7 days
Growth30 days90 days
Enterprise1 year1 year

Next steps