🚧 FastCMS is under active development — not ready for production use. APIs and features may change without notice.
FastCMS
Infrastructure

Metrics

Built-in Prometheus-compatible metrics for HTTP request counts, latencies, error rates, and uptime — no external dependencies required.

Metrics

FastCMS includes a built-in in-memory metrics store with Prometheus-compatible output. No external dependencies (like StatsD or Prometheus push gateway) are required.

Endpoints

Both endpoints require admin authentication.

JSON Snapshot

GET /api/v1/metrics
Authorization: Bearer ADMIN_TOKEN
{
  "counters": {
    "fastcms_http_requests_total": {
      "GET_200": 1523,
      "POST_201": 87,
      "POST_400": 12
    },
    "fastcms_http_errors_total": {
      "POST_500": 2
    }
  },
  "gauges": {
    "fastcms_uptime_seconds": 86400
  },
  "histograms": {
    "fastcms_http_request_duration_ms": {
      "GET": {"p50": 12.4, "p95": 45.1, "p99": 120.3, "count": 1523}
    }
  }
}

Prometheus Format

GET /api/v1/metrics/prometheus
Authorization: Bearer ADMIN_TOKEN
# TYPE fastcms_http_requests_total counter
fastcms_http_requests_total{method="GET",status="200"} 1523
fastcms_http_requests_total{method="POST",status="201"} 87

# TYPE fastcms_http_request_duration_ms histogram
fastcms_http_request_duration_ms{method="GET",quantile="0.5"} 12.4
fastcms_http_request_duration_ms{method="GET",quantile="0.95"} 45.1
fastcms_http_request_duration_ms{method="GET",quantile="0.99"} 120.3

# TYPE fastcms_uptime_seconds gauge
fastcms_uptime_seconds 86400

Metrics Tracked

MetricTypeLabelsDescription
fastcms_http_requests_totalCountermethod, statusTotal HTTP requests
fastcms_http_request_duration_msHistogrammethodRequest duration in ms
fastcms_http_errors_totalCountermethod, statusHTTP 5xx errors
fastcms_uptime_secondsGaugeSeconds since app start

Histograms expose p50, p95, p99 percentiles. The last 5,000 observations per metric are kept in memory.

Prometheus Scraping

Add FastCMS to your prometheus.yml:

scrape_configs:
  - job_name: fastcms
    static_configs:
      - targets: ['your-fastcms.com']
    metrics_path: /api/v1/metrics/prometheus
    bearer_token: YOUR_ADMIN_TOKEN
    scheme: https

Grafana Dashboard

Import the metrics into Grafana by adding Prometheus as a data source, then build panels using queries like:

# Request rate (per minute)
rate(fastcms_http_requests_total[1m])

# Error rate
rate(fastcms_http_errors_total[5m])

# p95 latency
fastcms_http_request_duration_ms{quantile="0.95"}

# Uptime
fastcms_uptime_seconds

Notes

  • Metrics are in-memory only — they reset on server restart
  • For persistent metrics, scrape regularly with Prometheus and store in its TSDB
  • No additional Python packages required — pure Python implementation
  • Thread-safe with internal locking

On this page