I
APM & Infrastructure
Infrastructure Monitoring
Hosts, containers, serverless, GPU — one heartbeat endpoint.
▸ How it works
Hosts call `POST /v1/hosts/heartbeat` on a schedule (1 min default) with hostname, load, mem/cpu/gpu utilisation, kind (`host` / `container` / `serverless` / `gpu`), and tags. Funnel marks a host healthy if a heartbeat lands in the last 3× the interval; stale hosts auto-flip to `down` and an alert fires.
▸ What this lets you do
- ✓ Unified inventory across VMs, containers, Lambda, GPU pools
- ✓ Auto-detected drift when a host stops checking in
- ✓ Per-host metrics: CPU, mem, disk, network, GPU%, GPU-memory
- ✓ Tags drive filtering — env, region, team, anything you want
▸ Get it running
- 1 Cron a curl call to `/v1/hosts/heartbeat` from each box
- 2 Or use any OTel host metrics receiver pointed at `/v1/metrics`
- 3 Open `Hosts & agents` to see the inventory
▸ Code examples
# /etc/cron.d/funnel-heartbeat — runs every minute
* * * * * root /usr/local/bin/funnel-heartbeat.sh
# /usr/local/bin/funnel-heartbeat.sh
#!/usr/bin/env bash
curl -sS -X POST https://funnel.example.com/v1/hosts/heartbeat \
-H "Authorization: Bearer st_YOUR_KEY" \
-H "Content-Type: application/json" \
-d "{
\"hostname\": \"$(hostname)\",
\"kind\": \"host\",
\"load\": $(awk '{print $1}' /proc/loadavg),
\"mem_used_pct\": $(free | awk '/Mem:/{printf \"%.1f\",$3/$2*100}')
}"
Where to find it
/app/p/:org/:project/hosts