New: Monitor Mode - Deploy security rules risk-free!Learn more →
Back to Resources
Roadmap

Prometheus Metrics: Production-Grade Observability

Wesley Ellis
Oct 10, 2026
8 min read

Native Prometheus metrics are coming to G8KEPR in Q1 2025, providing production-grade observability with pre-built Grafana dashboards and OpenTelemetry support for distributed tracing.

Why Prometheus Metrics Matter

You can't secure what you can't measure. Prometheus metrics give you real-time visibility into:

🚨 Security Events

  • • Malicious requests blocked
  • • Attack type distribution
  • • Threat source IPs
  • • Authentication failures

📊 Performance

  • • Request latency (p50, p95, p99)
  • • Throughput (req/s)
  • • Error rates by endpoint
  • • Upstream service health

⚡ Rate Limiting

  • • Requests allowed/denied
  • • Quota usage per user
  • • Rate limit violations
  • • Token bucket states

🔄 Circuit Breakers

  • • Circuit states (open/closed/half-open)
  • • Failure rates
  • • Recovery attempts
  • • Fallback invocations

Available Metrics

G8KEPR exposes 40+ Prometheus metrics at /metrics:

HTTP Request Metrics

# HELP http_requests_total Total HTTP requests processed
# TYPE http_requests_total counter
http_requests_total{method="GET",endpoint="/api/users",status="200"} 45231
http_requests_total{method="POST",endpoint="/api/auth/login",status="401"} 127

# HELP http_request_duration_seconds HTTP request latency
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_bucket{endpoint="/api/users",le="0.005"} 40000
http_request_duration_seconds_bucket{endpoint="/api/users",le="0.01"} 44500
http_request_duration_seconds_bucket{endpoint="/api/users",le="0.025"} 45000
http_request_duration_seconds_bucket{endpoint="/api/users",le="+Inf"} 45231
http_request_duration_seconds_sum{endpoint="/api/users"} 234.5
http_request_duration_seconds_count{endpoint="/api/users"} 45231

Security Metrics

# HELP malicious_requests_blocked_total Malicious requests blocked
# TYPE malicious_requests_blocked_total counter
malicious_requests_blocked_total{threat_type="sql_injection"} 234
malicious_requests_blocked_total{threat_type="xss"} 45
malicious_requests_blocked_total{threat_type="path_traversal"} 12

# HELP rate_limit_exceeded_total Rate limit violations
# TYPE rate_limit_exceeded_total counter
rate_limit_exceeded_total{endpoint="/api/search",user="user_123"} 5
rate_limit_exceeded_total{endpoint="/api/auth/login",ip="1.2.3.4"} 15

Upstream Service Metrics

# HELP upstream_requests_total Requests to upstream services
# TYPE upstream_requests_total counter
upstream_requests_total{service="user-api",status="200"} 12000
upstream_requests_total{service="user-api",status="500"} 5

# HELP upstream_duration_seconds Upstream service latency
# TYPE upstream_duration_seconds histogram
upstream_duration_seconds_sum{service="user-api"} 450.2
upstream_duration_seconds_count{service="user-api"} 12005

Grafana Dashboards

We provide pre-built Grafana dashboards you can import instantly:

📊 G8KEPR Overview Dashboard

  • • Total requests/second (live)
  • • Error rate percentage
  • • P95/P99 latency graphs
  • • Top 10 endpoints by traffic
  • • Geographic distribution map
  • • Security events timeline
Dashboard ID: 17823 (grafana.com)

🔐 Security Dashboard

  • • Blocked requests by threat type (pie chart)
  • • Attack source IPs (table)
  • • Failed authentication attempts
  • • Rate limit violations by user
  • • SQL injection attempts over time
  • • XSS detection patterns
Dashboard ID: 17824 (grafana.com)

⚡ Performance Dashboard

  • • Latency heatmap (p50/p95/p99)
  • • Throughput trends
  • • Circuit breaker states
  • • Redis connection pool usage
  • • Database query times
  • • Memory/CPU usage
Dashboard ID: 17825 (grafana.com)

Prometheus Configuration

Add G8KEPR as a scrape target in your Prometheus config:

# prometheus.yml
scrape_configs:
  - job_name: 'g8kepr'
    scrape_interval: 15s
    static_configs:
      - targets: ['g8kepr:8000']
    metrics_path: /metrics

    # If G8KEPR is behind auth:
    basic_auth:
      username: prometheus
      password: ${METRICS_PASSWORD}

  # For Kubernetes:
  - job_name: 'g8kepr-k8s'
    kubernetes_sd_configs:
      - role: pod
        namespaces:
          names: [default]
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_label_app]
        action: keep
        regex: g8kepr

Alerting Rules

Example Prometheus alerts for G8KEPR:

# alerts.yml
groups:
  - name: g8kepr_security
    interval: 30s
    rules:
      - alert: HighMaliciousTraffic
        expr: rate(malicious_requests_blocked_total[5m]) > 100
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High rate of malicious requests detected"
          description: "{{ $value }} malicious requests/sec in last 5min"

      - alert: BruteForceAttack
        expr: rate(rate_limit_exceeded_total{endpoint="/api/auth/login"}[1m]) > 10
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Potential brute force attack on login endpoint"

  - name: g8kepr_performance
    interval: 30s
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Error rate above 5%"

      - alert: HighLatency
        expr: histogram_quantile(0.99, http_request_duration_seconds_bucket) > 1.0
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "P99 latency above 1 second"

OpenTelemetry Integration

For distributed tracing across microservices:

# config.yaml
observability:
  tracing:
    enabled: true
    exporter: otlp
    endpoint: http://jaeger:4318

    # Sample rate (0.0 to 1.0)
    sample_rate: 0.1  # Trace 10% of requests

    # Always trace these endpoints:
    always_sample:
      - /api/auth/*
      - /api/admin/*

  # Trace propagation headers
  propagate_headers:
    - traceparent  # W3C Trace Context
    - tracestate
    - x-request-id  # Custom correlation ID

Metrics Cardinality Control

Prevent metrics explosion from high-cardinality labels:

# config.yaml
metrics:
  # Limit unique values per label
  cardinality_limits:
    endpoint: 1000  # Max 1000 unique endpoints
    user_id: 10000  # Max 10000 unique users
    ip: 100000  # Max 100k unique IPs

  # Drop metrics for low-traffic endpoints
  endpoint_threshold: 10  # Must have 10+ req/min

  # Aggregate dynamic paths:
  path_normalization:
    enabled: true
    # /api/users/123 → /api/users/:id
    # /api/posts/456 → /api/posts/:id

Export Metrics to Other Systems

📈 Datadog

# Use Datadog agent with
# openmetrics check:
instances:
  - prometheus_url: http://g8kepr:8000/metrics
    namespace: g8kepr
    metrics: ["*"]

📊 New Relic

# Use Prometheus remote write:
remote_write:
  - url: https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=g8kepr
    bearer_token: YOUR_LICENSE_KEY

☁️ AWS CloudWatch

# Use CloudWatch agent:
  [[inputs.prometheus]]
    urls = ["http://g8kepr:8000/metrics"]
  [[outputs.cloudwatch]]
    namespace = "G8KEPR"

📉 Splunk

# Use Splunk OpenTelemetry Collector:
receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: g8kepr
          static_configs:
            - targets: [g8kepr:8000]

Real-Time Metrics in Dashboard

If you use the G8KEPR cloud dashboard, metrics are automatically synced every 60 seconds without any Prometheus setup:

FeaturePrometheusG8KEPR Cloud
Setup RequiredManualZero-config
Query LanguagePromQLGUI + SQL
RetentionYour choice90 days (Growth), 1 year (Enterprise)
AlertingAlertmanagerEmail/Slack/PagerDuty built-in
CostInfrastructure onlyIncluded in plan

Coming Q1 2025

Prometheus metrics will be included in the Starter plan ($99/mo) and above. Community edition gets basic /metrics endpoint. Join the beta to help test the Grafana dashboards.

Join Beta Waitlist →

Ready to Secure Your APIs?

Deploy enterprise-grade API security in 5 minutes. No credit card required.

Start Free Trial
Prometheus Metrics: Production-Grade Observability | G8KEPR