Platform
Monitors

Monitors

Monitors are scheduled checks that verify your services are running correctly. Statly checks your endpoints from multiple global regions every 1-5 minutes.

Monitor Types

HTTP Monitors

The most common monitor type. Check web endpoints for expected responses.

Configuration:

FieldDescriptionRequired
nameDisplay name for the monitorYes
urlFull URL including protocolYes
methodHTTP method (GET, POST, PUT, DELETE, PATCH, HEAD)No (default: GET)
expectedCodeExpected HTTP status codeNo (default: 200)
timeoutMax wait time in seconds (1-120)No (default: 30)
headersCustom headers as JSON objectNo
bodyRequest body for POST/PUTNo

Example:

{
  "name": "Production API",
  "url": "https://api.example.com/health",
  "method": "GET",
  "expectedCode": 200,
  "timeout": 10,
  "headers": {
    "Authorization": "Bearer token123"
  }
}

TCP Monitors

Check that a port is accepting connections. Useful for databases, Redis, or custom services.

Configuration:

FieldDescriptionRequired
nameDisplay nameYes
hostHostname or IP addressYes
portPort number (1-65535)Yes
timeoutMax wait time in secondsNo (default: 10)

DNS Monitors

Verify DNS records are resolving correctly.

Configuration:

FieldDescriptionRequired
nameDisplay nameYes
hostnameDomain to queryYes
recordTypeA, AAAA, CNAME, MX, TXT, NSYes
expectedValueExpected resolved valueNo

Check Frequency

Monitors can run at different intervals based on your plan:

PlanMinimum Interval
Free5 minutes
Hobby3 minutes
Pro1 minute
Enterprise30 seconds

Probe Regions

Checks run from AWS Lambda probes in multiple regions:

  • us-east-1 (N. Virginia)
  • us-west-2 (Oregon)
  • eu-west-1 (Ireland)
  • ap-northeast-1 (Tokyo)
  • ap-southeast-1 (Singapore)

A service is marked "down" only when checks fail from multiple regions. This prevents false positives from regional network issues.

Status States

Each monitor has one of these states:

StateDescriptionColor
upAll checks passingGreen
degradedSlow responses or intermittent failuresYellow
downConsistent failures from multiple regionsRed
pausedMonitor is disabledGray

Heartbeats

Each check creates a heartbeat record with:

  • Timestamp
  • Status (up/down)
  • Response time (ms)
  • Region
  • Error message (if failed)

View heartbeat history in the monitor detail page or query via API.

Alerting

Configure alerts when monitors change state:

  1. Email: Send to team members or custom addresses
  2. Webhook: POST to your endpoint with signed payloads
  3. Slack: Send to Slack channels via incoming webhooks
  4. Discord: Post alerts to Discord channels
  5. PagerDuty: Create and resolve incidents automatically
  6. Microsoft Teams: Post to Teams channels
  7. Opsgenie: Create and manage alerts
  8. SMS: Send text messages via Twilio

See Notifications for detailed setup instructions.

Best Practices

Health Check Endpoints

Create dedicated health check endpoints for monitoring:

// Express.js example
app.get('/health', (req, res) => {
  // Check dependencies
  const dbHealthy = checkDatabase();
  const cacheHealthy = checkRedis();
 
  if (dbHealthy && cacheHealthy) {
    res.status(200).json({ status: 'healthy' });
  } else {
    res.status(503).json({ status: 'unhealthy' });
  }
});

Authentication

For authenticated endpoints, create a read-only monitoring token:

# Create in dashboard, then use in monitor config
{
  "headers": {
    "X-Monitoring-Token": "mon_xxx"
  }
}

Timeouts

Set appropriate timeouts based on your service:

  • Health checks: 5-10 seconds
  • API endpoints: 10-30 seconds
  • Heavy operations: 30-60 seconds

API

Manage monitors programmatically:

# List all monitors
curl -X GET "https://statly.live/api/v1/monitors" \
  -H "Authorization: Bearer sk_live_xxx"
 
# Create a monitor
curl -X POST "https://statly.live/api/v1/monitors" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "API", "url": "https://api.example.com/health"}'

See API Reference → Monitors for full documentation.