The TeleQuick gateway emits four streams of operational data. Each one targets a different consumer; you can opt out of any of them via the gateway’s deployment config.
StreamProtocolConsumer
Prometheus metricsOpenMetrics scrapePrometheus / Grafana / Mimir
Distributed tracesOTLP / HTTP :4318SigNoz, Tempo, Honeycomb, Datadog
Call Detail RecordsHTTP JSONEachRowClickHouse
SIP packet captureHEPv3 UDPHomer / heplify-server

Metrics

A Prometheus-style endpoint exposes a fixed set of metric families. Names are stable; relevant ones for capacity planning:
MetricLabelsType
telequick_calls_totaltenant, trunk, direction, resultCounter
telequick_calls_activetenant, trunkGauge
telequick_call_duration_secondstenant, trunk, resultHistogram
telequick_rtp_packets_totaldirection, codecCounter
telequick_rtp_loss_ratiotenantGauge
telequick_jitter_mstenantHistogram
telequick_estimated_mostenantHistogram
telequick_codec_engine_lag_usshardHistogram
telequick_quic_handshake_seconds(none)Histogram
telequick_admin_requests_totalmethod, resultCounter
Scrape from http://<gateway-host>:9091/metrics.

Tracing

Every RPC produces an OpenTelemetry trace with these standard fields:
  • service.name = telequick-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

Each call ends with a CDR row pushed to ClickHouse via the HTTP JSONEachRow interface. Schema (in the telephony_cdrs table, partitioned by month, indexed on (tenant_id, timestamp_ms)):
ColumnClickHouse typeSource
call_sidString
tenant_idLowCardinality(String)
trunk_idLowCardinality(String)
directionEnum8outbound / inbound.
from_numberString
to_numberString
start_timestamp_msDateTime64(3)
answer_timestamp_msNullable(DateTime64(3))
end_timestamp_msDateTime64(3)
duration_secondsUInt32
q850_causeUInt16ITU-T Q.850 cause code.
statusLowCardinality(String)
codecLowCardinality(String)
packets_sentUInt32
packets_receivedUInt32
packets_lostUInt32
bytes_sentUInt64
jitter_msFloat32
estimated_mosFloat32R-factor → MOS estimate.
recording_urlStringEmpty if not recorded.
agent_idLowCardinality(String)If routed through an AI agent DAG.
These fields mirror the CallEvent you receive on CHANNEL_HANGUP_COMPLETE — same data, just persisted server-side.

SIP capture (HEPv3)

For SIP-side debugging the gateway can also emit HEPv3 frames over UDP to a Homer / heplify-server instance. Useful when a call fails before any CallEvent makes it to the SDK and you need to inspect the actual SIP exchange. Configure via:
# gateway config snippet
heplify:
  enabled: true
  endpoint: 192.0.2.10:9060
  capture_id: 2001
Disable in production unless you’re actively debugging — HEPv3 doubles the SIP-side packet rate.