The ClutchCall gateway emits four streams of operational data. Each stream targets a different consumer. You can opt out of any stream via the gateway’s deployment config.

Metrics

A Prometheus-style endpoint exposes a fixed set of metric families. The names are stable. These metrics are relevant for capacity planning: Scrape from http://<gateway-host>:9091/metrics.

Tracing

Every RPC produces an OpenTelemetry trace with these standard fields:
  • service.name = clutchcall-gateway
  • tenant.id
  • call.sid (when applicable)
  • method.id (the RPC’s method_id decimal)
  • transport = quic | webtransport | webrtc | sip
Spans cover RPC parse, JWT validation, trunk lookup, dialplan node execution, and SIP/RTP setup. Correlate with metrics via the tenant label. OTLP endpoint defaults: http://localhost:4318 (HTTP) / http://localhost:4317 (gRPC). Override via the gateway’s OTEL_EXPORTER_OTLP_ENDPOINT env var.

Call Detail Records

When a call ends, the gateway pushes a CDR row to ClickHouse via the HTTP JSONEachRow interface. The schema is below. The telephony_cdrs table is partitioned by month and indexed on (tenant_id, timestamp_ms): These fields mirror the CallEvent that you receive on CHANNEL_HANGUP_COMPLETE. The data is the same, but the gateway persists it server-side.

SIP capture (HEPv3)

For SIP-side debugging, the gateway can also send HEPv3 frames over UDP to a Homer / heplify-server instance. Use this when a call fails before any CallEvent reaches the SDK and you must inspect the actual SIP exchange. Configure via:
Disable this in production unless you actively debug an issue. HEPv3 doubles the SIP-side packet rate.