Context
Production deployments need metrics, not just logs. The metrics customers consistently ask for:
rtms.active_meetings (gauge) — how many Client instances currently joined
rtms.transcript_chunks_per_second (counter) — throughput
rtms.reconnect_attempts (counter, by scenario 1/2/3) — recovery health
rtms.signature_failures (counter) — security signal
rtms.join_latency_ms (histogram) — time from join() to on_join_confirm
Today customers grep CloudWatch Logs Insights and emit their own metrics via boto3.client("cloudwatch").put_metric_data from inside callbacks. Slow, fragile, and assumes the customer is on AWS.
What to ship
Two complementary paths:
- Built-in OpenTelemetry exporter — emit metrics via OTLP. Customers point at any backend (CloudWatch via ADOT, Prometheus, Datadog, New Relic, Honeycomb).
- Pluggable metric sink for non-OTel setups:
def my_sink(name: str, value: float, labels: dict[str, str]):
boto3.client("cloudwatch").put_metric_data(...)
rtms.set_metric_sink(my_sink)
Document both. OTel is the modern default; the sink is the escape hatch.
Acceptance criteria
Cross-language parity
Source
Tracked in vault: Projects/RTMS SDK v1.2.md → DEVS-X13.
Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.
Context
Production deployments need metrics, not just logs. The metrics customers consistently ask for:
rtms.active_meetings(gauge) — how manyClientinstances currently joinedrtms.transcript_chunks_per_second(counter) — throughputrtms.reconnect_attempts(counter, by scenario 1/2/3) — recovery healthrtms.signature_failures(counter) — security signalrtms.join_latency_ms(histogram) — time fromjoin()toon_join_confirmToday customers grep CloudWatch Logs Insights and emit their own metrics via
boto3.client("cloudwatch").put_metric_datafrom inside callbacks. Slow, fragile, and assumes the customer is on AWS.What to ship
Two complementary paths:
Document both. OTel is the modern default; the sink is the escape hatch.
Acceptance criteria
ZM_RTMS_OTEL_ENABLED=trueor constructor paramrtms.set_metric_sink(callable)for custom routingCross-language parity
Source
Tracked in vault:
Projects/RTMS SDK v1.2.md→ DEVS-X13.Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.