GET /metrics on the same port as the health probes (8080 by default, configurable with AGENT_SERVER_PORT). One endpoint covers every check type the agent runs. Each metric carries a component label: uptime for API checks and uptime monitors, synthetics for Browser, Multistep and Playwright checks. The uptime image only reports component="uptime".
Terminal
component label.
Agent metrics
These metrics are always on.Runtime metrics
The endpoint also serves the standard runtime metrics of both agent processes. Use them to size CPU and memory for the container.process_* metrics with the same name, such as process_cpu_seconds_total and process_resident_memory_bytes, appear once per component. Sum over component to get the container total.
Check-level metrics
Starting with agent v8.13.0, setAGENT_METRICS_PER_CHECK=true to expose one set of series per check. These series carry the labels check_id, name, check_type and tags. Timings are in seconds. Histograms have five buckets.
The metrics follow the Prometheus V2 integration, with these differences:
- Names use the
checkly_agent_prefix. check_typevalues are upper-case, for exampleAPIorBROWSER.- There are no
group,muted,activatedorlocationlabels, andkey:valuetags are not parsed into labels. Add alocationlabel in your scrape config. - Heartbeat metrics and
checkly_time_to_ssl_expiry_secondsare not reported. Usecheckly_agent_ssl_monitor_days_until_expiry. checkly_agent_browser_check_errors_totalis a counter.
Reduce cardinality in Kubernetes
A check can run on any pod of a Private Location, so each check’s series appears once per pod. If your scrape config addspod and instance labels, you store one series set per check and pod.
For gauges, such as checkly_agent_check_status and checkly_agent_ssl_monitor_days_until_expiry, you can drop both labels. All pods report the same value for a check, so the last write wins and nothing is lost.
PodMonitor
rate() reports resets. Aggregate them instead, with a recording rule such as sum without (pod, instance) (rate(checkly_agent_check_result_total[5m])), or with an aggregation feature of your metrics backend.