Skip to content

Metrics

The OpenTalk controller is collecting metrics and is exposing them through the /metrics endpoint.

Configuration

The section in the configuration file is called metrics.

By default, the /metrics endpoint refuses all connections. The access can be configured with an allowlist.

Field Type Required Default value Description
allowlist string no - List of IP-Addresses or Subnet which are allowed to fetch metrics

Examples

Access denied (default)

[metrics]
allowlist = []

Only allow localhost

[metrics]
allowlist = ["127.0.0.0/8", "::ffff:0:0/96"]

Allow IPs and subnets

[metrics]
allowlist = ["1.1.1.1", "127.0.0.0/8"]

Web-API

The metrics can be accessed via the /metrics endpoint in the OpenMetrics Text Format, which is utilized by prometheus.

All metrics listed below carry an otel_scope_name label: ot-controller for metrics originating in the controller itself, ot-roomserver for signaling metrics coming from the embedded roomserver. The OpenTelemetry Prometheus exporter additionally emits a target_info gauge carrying SDK and service metadata (service_name, telemetry_sdk_language, telemetry_sdk_name, telemetry_sdk_version).

HTTP endpoint metrics

Key Type Labels Description
web_request_duration_seconds histogram method, handler, status Duration of HTTP requests handled by the controller
web_response_sizes_bytes histogram method, handler, status Body size of HTTP responses with a known length
web_issued_email_tasks_count counter mail_task_kind Number of outbound email tasks the controller has queued

Database metrics

Key Type Labels Description
sql_execution_time_seconds histogram Time taken to execute a single SQL query
sql_errors_total counter error Number of SQL queries that returned an error
sql_dbpool_connections histogram Number of currently non-idling db connections
sql_dbpool_connections_idle histogram Number of currently idling db connections

Redis metrics

Only present when Redis is configured.

Key Type Labels Description
redis_command_execution_time_seconds histogram command Redis command execution time

Signaling metrics

Provided by the roomserver. Only present on the controller's /metrics endpoint when roomserver.kind = "internal" (see RoomServer); with roomserver.kind = "external", scrape the roomserver's own /metrics endpoint instead.

Key Type Labels Description
signaling_created_rooms_count counter Number of created rooms
signaling_destroyed_rooms_count counter Number of destroyed rooms
signaling_created_breakout_rooms_count counter Number of breakout rooms that have been opened
signaling_destroyed_breakout_rooms_count counter Number of breakout rooms that have been closed
signaling_connection_count gauge participation_kind Number of connections by kind (user, guest, recorder, transcription, call_in, registered_call_in)
signaling_connections_per_room gauge bucket Connections per room by bucket (2, 10, 25, 50, 100, 200, 300)
signaling_room_life_time histogram Time rooms were active
signaling_connection_meeting_time histogram Time a connection was connected to a meeting room
signaling_congested_connections counter Number of connections the server dropped because they could not keep up with the outgoing message rate