Metrics
Every service in an app reports four metrics: CPU, memory, request rate, and request latency. Koo reads them on demand from its hosting layer — as charts in the console, and as raw time series through the observability API.
What's measured
| Metric | What it tells you |
|---|---|
| CPU | Compute the service is using |
| Memory | Memory the service is holding |
| Request rate | Traffic the service is receiving |
| Latency | How long the service takes to respond |
CPU and memory are reported for every service type, including Postgres and Redis. Request rate and latency cover web services that handle traffic.
A service's CPU and memory settings cap what it has available. Sustained high CPU or memory is the usual signal to give the service more.
Reading the charts
- Open the app and select the service.
- The service's metrics view shows a chart per metric.
- Use the time-range picker to widen or narrow the window. Ranges are capped at your plan's metrics retention.
Charts are per service. A chart can carry more than one series — each series is labeled, so you can tell them apart.
Replicas
A web service can run more than one replica, and each plan sets a per-service replica ceiling — see the plan comparison in Billing. Postgres and Redis services run as a single replica.
Scaling settings live on the service spec: a minimum and maximum replica count, plus the metric scaling tracks — concurrency, CPU, or requests per second. The current replica counts — how many are ready versus desired — are part of status, not metrics.
Retention by plan
How far back you can query depends on your plan; the Free plan's window is part of the free tier, and paid plans extend it — exact windows are in the plan comparison in Billing. Requesting a range beyond your retention isn't an error: the window is clamped server-side to what your plan keeps.
Koo doesn't warehouse your metrics. Every query — chart or API — is read live from Koo's hosting layer, so what you see is the source of truth, bounded by your plan's window.
Metrics vs status
Metrics show trends; status shows current truth. After a deploy, confirm the service is running from its status — readiness and replica counts — not from a dip or spike in the charts. Use metrics to answer "how has this behaved over time?" and status to answer "is this healthy right now?"
For the request-by-request view, see Logs.
Fetch metrics from the API
Each request returns one metric as a JSON time series — labeled series of timestamped points, with the unit, resolved range, and step size:
curl "https://api.koo.io/accounts/{accountId}/projects/{projectId}/environments/{environmentId}/services/{name}/metrics?metric=cpu&range=1h" \ -H "Authorization: Bearer kc_…"metric is one of cpu, mem, req, or latency; range is a relative window like 1h, clamped to your plan's retention. These calls authenticate with an API token. The full request and response shapes are in the observability API reference.