Quota Management

Monitor and manage usage limits for your observability apps.

Understanding Quotas

Quotas limit monthly usage:

  • Prevents unexpected costs
  • Controls data volume
  • Alerts on high usage

RUM Quotas

Sessions

Unique browser sessions (30-minute timeout).

What counts:

  • New browser session
  • Returning after 30min inactivity
  • Different device/browser

What doesn't count:

  • Page reloads within session
  • SPA navigation
  • Tab switches

Events

Total events captured:

  • Page loads
  • Core Web Vitals
  • Errors
  • Clicks (if enabled)
  • Console logs (if enabled)
  • Network requests (if enabled)

Reduce usage:

rum.configure({
  trackInteractions: false,  // Disable clicks
  trackConsole: false,       // Disable console
  trackNetwork: false        // Disable network
});

Replay Storage

Compressed session replay data (GB).

Average sizes:

  • Simple page: 50-100KB
  • E-commerce: 200-500KB
  • Rich SPA: 500KB-2MB

Reduce usage:

rum.configure({
  sessionReplay: {
    sampleRate: 0.1,  // Record 10%
    blockSelector: '.heavy-element'
  }
});

OTLP Quotas

Spans

Number of trace spans.

What counts:

  • Each span in trace
  • Database queries
  • HTTP requests
  • Custom operations

Reduce usage:

// Sample traces
const sampler = new TraceIdRatioBasedSampler(0.1);

// Filter spans
if (span.name === 'healthcheck') return false;

Logs

Storage for structured logs (GB).

Reduce usage:

  • Log only errors/warnings in production
  • Sample high-frequency logs
  • Filter noisy log sources

Metrics

Unlimited metric data points (retention limits apply).

Retention:

  • Raw: 7 days
  • 5min aggregation: 30 days
  • 1hour aggregation: 90 days
  • 1day aggregation: 1 year

Monitoring Usage

Dashboard View

Observability → Apps → [Your App] → Usage

Shows:

  • Current month consumption
  • Percentage of quota used
  • Projected end-of-month usage
  • Historical trends

Usage Alerts

Configure alerts: App Settings → Quotas → Alerts

Trigger at:

  • 50% quota used
  • 80% quota used (warning)
  • 100% quota exceeded (critical)

Notification channels:

  • Email
  • Slack
  • Telegram
  • Webhooks

Quota Exceeded

When quota limit reached:

Default Behavior

New data rejected with 429 status:

{
  "error": "Quota exceeded",
  "quota_type": "rum_sessions",
  "limit": 10000,
  "used": 10000,
  "reset_at": "2024-02-01T00:00:00Z"
}

Use Top-Up Balance

If top-up balance available:

  1. Auto-deduct from balance
  2. Continue accepting data
  3. Alert on low balance

See: Top-Ups

Adjusting Quotas

Upgrade Plan

Higher-tier plans include more quota:

Plan Sessions Events Spans Logs
Free 1,000 10,000 10,000 100MB
Pro 10,000 100,000 100,000 1GB
Business 50,000 500,000 500,000 10GB
Enterprise Custom Custom Custom Custom

Custom Quotas

Enterprise plans support custom quotas per app.

Contact: [email protected]

Best Practices

DO:

  • Set up 80% usage alerts
  • Monitor usage trends weekly
  • Sample high-traffic events
  • Use appropriate retention periods

DON'T:

  • Wait until quota exceeded
  • Log everything in production
  • Ignore usage patterns
  • Set quotas too low for traffic

API Access

Query usage programmatically:

curl -H "Authorization: Bearer $API_KEY" \
  https://statusradar.dev/api/observability/apps/{app_id}/usage

Response:

{
  "period": "2024-01",
  "quotas": {
    "rum_sessions": { "limit": 10000, "used": 7523, "remaining": 2477 },
    "rum_events": { "limit": 100000, "used": 45201, "remaining": 54799 }
  },
  "overage_handling": "reject",
  "top_up_balance": { "sessions": 5000, "events": 10000 }
}

Next Steps