Monitoring
API Monitoring
Track API health, performance, and usage in real-time. Integrate with Prometheus, Datadog, CloudWatch, and more.
Real-time metrics
Custom alerts
30-day retention
Available Metrics
counter
jk_requests_total
Total API requests
jk_requests_total{endpoint="/v1/valuations",method="POST"}histogram
jk_request_duration_seconds
Request latency
histogram_quantile(0.95, jk_request_duration_seconds_bucket)counter
jk_errors_total
Total error responses
jk_errors_total{status="500",endpoint="/v1/valuations"}gauge
jk_rate_limit_remaining
Remaining rate limit
jk_rate_limit_remaining{org_id="org_123"}counter
jk_webhook_deliveries
Webhook delivery count
jk_webhook_deliveries{status="success"}histogram
jk_batch_size
Batch request sizes
avg(jk_batch_size_bucket)Recommended Alert Rules
| Alert | Condition | Severity | Action |
|---|---|---|---|
| High Error Rate | error_rate > 5% | critical | Page on-call, auto-create incident |
| Elevated Latency | p95 > 500ms | warning | Slack notification, log to dashboard |
| Rate Limit Approaching | remaining < 10% | warning | Email notification |
| Webhook Failures | failure_rate > 10% | warning | Slack notification |
| API Unavailable | uptime < 99.9% | critical | Page on-call, status page update |
Integration Guides
Prometheus Configuration
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'justkalm-api'
scheme: https
bearer_token: 'YOUR_METRICS_API_KEY'
static_configs:
- targets: ['metrics.justkalm.com']
metrics_path: /v1/metrics
# Alert rules
rule_files:
- 'justkalm_alerts.yml'
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']Alert Rules
# justkalm_alerts.yml
groups:
- name: justkalm
rules:
- alert: JustKalmHighErrorRate
expr: |
sum(rate(jk_errors_total[5m]))
/ sum(rate(jk_requests_total[5m])) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "High error rate detected"
description: "Error rate is {{ $value | humanizePercentage }}"
- alert: JustKalmHighLatency
expr: |
histogram_quantile(0.95,
sum(rate(jk_request_duration_seconds_bucket[5m])) by (le)
) > 0.5
for: 10m
labels:
severity: warning
annotations:
summary: "High API latency"
description: "p95 latency is {{ $value }}s"
- alert: JustKalmRateLimitLow
expr: jk_rate_limit_remaining < 100
for: 1m
labels:
severity: warning
annotations:
summary: "Rate limit nearly exhausted"Built-in Dashboard
99.98%
Uptime (30d)
45ms
p50 Latency
2.3M
Requests (24h)
0.02%
Error Rate
Monitoring Best Practices
Set Baseline Alerts
Start with our recommended thresholds and tune based on your traffic patterns over time.
Monitor Rate Limits
Alert when rate limit remaining drops below 20%. Proactively request limit increases.
Use Request IDs
Log X-Request-Id with every request. Correlate with our support for faster debugging.
Avoid Alert Fatigue
Start with critical alerts only. Add warnings after establishing normal baselines.