Extended Prometheus metrics
Composer exposes roughly 160 metrics on its Prometheus endpoint (default port 8015, path /metrics). The tables below are the canonical reference, generated from the metric definitions in the engine; the Description column reproduces the # HELP text served alongside each metric on the endpoint. From R2 2026 every metric is emitted by every Composer build and licence tier (including Trial) with no separate activation.
Caution
Pre-R2 2026 releases: On older releases the extended metrics still appeared on the endpoint but reported 0 and didn't update unless the host's licence carried the Extended Monitoring plug-in entry (Trial builds were the exception and always exposed them). The baseline metrics (see below) have always reported normally regardless of licence.
Naming and prefixes
Metric names are a wire contract — Grafana dashboards and alert rules query them by name, so they are stable across releases. Composer uses five name prefixes:
| Prefix | Group | Notes |
|---|---|---|
composer_ |
Baseline | Core render-loop and log counters. Always emitted on every tier. |
composer_ext_ |
Extended | The bulk of the surface — GPU, RTMP/SRT, alarms, WebSockets, etc. The _ext_ prefix is historical; it is not a reliable marker of which group a metric belongs to. |
composer_packager_sink_target_ |
MoQ / Packager target | Per-target media-over-QUIC output metrics. |
composer_moq_input_ |
MoQ / Packager source | Per-source media-over-QUIC input metrics. |
composer_runtime_ |
Runtime lifecycle | Process- and session-level metrics for the headless Composer Runtime. |
Every metric additionally carries the static labels systemlabel, version, and hostname, applied at startup so a single Prometheus/Grafana instance can disambiguate many Composer hosts. Counters (cumulative since process start) are marked Counter below; everything else is a Gauge (an instantaneous value, even where the name ends in _total or _count).
Baseline metrics
Always emitted, on every licence tier. These drive the core render-health panels and the per-severity log counters.
| Metric | Type | Description |
|---|---|---|
composer_frames_processed_total |
Gauge | Total processed video frames since process start. |
composer_congestions_last_second |
Gauge | Congestive frames in the last second. |
composer_congestive_frames_since_start |
Gauge | Total congestive frames since process start. |
composer_processing_queue_length |
Gauge | Current render processing queue length. |
composer_last_frame_processing_time |
Gauge | Processing time of the most recent frame in ms. |
composer_max_processing_time |
Gauge | Maximum frame processing time observed in ms. |
composer_average_processing_time |
Gauge | Average frame processing time in ms. |
composer_gpu_ram_usage |
Gauge | GPU RAM used by the process in GB. |
composer_fatal_error_count_total |
Counter | Total fatal errors logged since process start. |
composer_error_count_total |
Counter | Total errors logged since process start. |
composer_warning_count_total |
Counter | Total warnings logged since process start. |
Processing
Extended render-loop timing beyond the baseline frame counters.
| Metric | Type | Description |
|---|---|---|
composer_ext_average_processing_time_10k_frames |
Gauge | Average frame processing time over the last 10k frames in ms. |
composer_ext_average_processing_usage_10k_frames |
Gauge | Average processing-budget usage over the last 10k frames in percent. |
composer_ext_last_frame_processing_usage |
Gauge | Processing-budget usage of the most recent frame in percent. |
composer_ext_worker_queue_flushes |
Gauge | Worker queue flushes since process start. |
GPU
Sampled from nvidia-smi. All values are for the GPU Composer is bound to.
| Metric | Type | Description |
|---|---|---|
composer_ext_gpu_power_usage_percentage |
Gauge | GPU power draw as a percentage of the power limit. |
composer_ext_gpu_power_usage |
Gauge | GPU power draw in watts. |
composer_ext_gpu_power_limit |
Gauge | GPU power limit in watts. |
composer_ext_gpu_power_state |
Gauge | GPU performance state (P-state) reported by nvidia-smi, as an integer. |
composer_ext_gpu_power_management_enabled |
Gauge | 1 if GPU power management is enabled, 0 otherwise. |
composer_ext_gpu_utilization |
Gauge | GPU core utilisation percentage. |
composer_ext_gpu_encoder_utilization |
Gauge | GPU hardware encoder utilisation percentage. |
composer_ext_gpu_decoder_utilization |
Gauge | GPU hardware decoder utilisation percentage. |
composer_ext_gpu_memory_total |
Gauge | Total GPU memory in GB. |
composer_ext_gpu_memory_used |
Gauge | Used GPU memory in GB. |
composer_ext_gpu_memory_available |
Gauge | Available GPU memory in GB. |
composer_ext_gpu_temperature |
Gauge | GPU temperature in degrees Celsius. |
System memory
Process RAM (not host-wide memory), in GB.
| Metric | Type | Description |
|---|---|---|
composer_ext_system_memory_usage |
Gauge | Process RAM usage in GB. |
composer_ext_system_memory_usage_avg_10min |
Gauge | Average process RAM usage over the last 10 minutes in GB. |
composer_ext_system_memory_usage_max_10min |
Gauge | Peak process RAM usage over the last 10 minutes in GB. |
composer_ext_system_memory_usage_min_10min |
Gauge | Minimum process RAM usage over the last 10 minutes in GB. |
RTMP targets (aggregate)
Roll-ups across all RTMP targets in the project. For per-target detail, see Per-instance metrics below.
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_target_count |
Gauge | Number of RTMP target instances. |
composer_ext_rtmp_target_nvenc_count |
Gauge | Number of RTMP targets using the NVENC encoder. |
composer_ext_rtmp_target_x264_count |
Gauge | Number of RTMP targets using the x264 software encoder. |
composer_ext_rtmp_target_connected_count |
Gauge | Number of RTMP targets currently connected. |
composer_ext_rtmp_target_disconnected_count |
Gauge | Number of RTMP targets currently disconnected. |
composer_ext_rtmp_target_connecting_count |
Gauge | Number of RTMP targets currently connecting. |
composer_ext_rtmp_target_disconnecting_count |
Gauge | Number of RTMP targets currently disconnecting. |
composer_ext_rtmp_target_reconnecting_count |
Gauge | Number of RTMP targets currently reconnecting. |
composer_ext_rtmp_target_errors |
Gauge | Number of RTMP targets currently in an error state. |
composer_ext_rtmp_target_warnings |
Gauge | Number of RTMP targets currently in a warning state. |
composer_ext_rtmp_target_error_count |
Counter | Total RTMP target errors since process start. |
composer_ext_rtmp_target_warning_count |
Counter | Total RTMP target warnings since process start. |
composer_ext_rtmp_target_auto_reconnect_count |
Gauge | Total automatic RTMP target reconnections. |
composer_ext_rtmp_target_sum_outgoing_bitrate |
Gauge | Combined outgoing bitrate across all RTMP targets in Mbit/s. |
composer_ext_rtmp_target_avg_network_write_time |
Gauge | Average network write time across RTMP targets in ms. |
composer_ext_rtmp_target_avg_video_encode_time |
Gauge | Average video encode time across RTMP targets in ms. |
composer_ext_rtmp_target_all_connected |
Gauge | 1 if all RTMP targets are connected, 0 otherwise. |
composer_ext_rtmp_target_max_pts_diff |
Gauge | Maximum PTS difference across RTMP targets in ms. |
Per-instance metrics
One time series per input/target instance, identified by the labels instance_id and instance_name. Series are removed from the endpoint when their instance is torn down, so a stopped target stops appearing rather than reporting stale values. connection_status is encoded as 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting; buffer_state / buffering_state as 0=None, 1=Buffering, 2=Buffered; listener and playback states are raw integer enum values.
RTMP target (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_target_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_rtmp_target_instance_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s. |
composer_ext_rtmp_target_instance_output_queue_size |
Gauge | Output queue depth. |
composer_ext_rtmp_target_instance_avg_video_encode_time_ms |
Gauge | Average video encode time in ms. |
composer_ext_rtmp_target_instance_max_video_encode_time_ms |
Gauge | Maximum video encode time in ms. |
composer_ext_rtmp_target_instance_avg_network_write_time_ms |
Gauge | Average network write time in ms. |
composer_ext_rtmp_target_instance_pts_diff_average |
Gauge | Average PTS difference in ms. |
composer_ext_rtmp_target_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_rtmp_target_instance_video_frames_written |
Gauge | Video frames written. |
composer_ext_rtmp_target_instance_error_count |
Gauge | Error count for this target. |
composer_ext_rtmp_target_instance_warning_count |
Gauge | Warning count for this target. |
SRT target (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_srt_target_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_srt_target_instance_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s. |
composer_ext_srt_target_instance_output_queue_size |
Gauge | Output queue depth. |
composer_ext_srt_target_instance_avg_video_encode_time_ms |
Gauge | Average video encode time in ms. |
composer_ext_srt_target_instance_max_video_encode_time_ms |
Gauge | Maximum video encode time in ms. |
composer_ext_srt_target_instance_avg_network_write_time_ms |
Gauge | Average network write time in ms. |
composer_ext_srt_target_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_srt_target_instance_video_frames_written |
Gauge | Video frames written. |
composer_ext_srt_target_instance_error_count |
Gauge | Error count for this target. |
composer_ext_srt_target_instance_warning_count |
Gauge | Warning count for this target. |
RTMP input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_input_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_rtmp_input_instance_video_buffer_size_frames |
Gauge | Video buffer depth in frames. |
composer_ext_rtmp_input_instance_video_buffer_size_ms |
Gauge | Video buffer depth in ms. |
composer_ext_rtmp_input_instance_audio_buffer_size_ms |
Gauge | Audio buffer depth in ms. |
composer_ext_rtmp_input_instance_buffer_state |
Gauge | Buffer state: 0=None, 1=Buffering, 2=Buffered. |
composer_ext_rtmp_input_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_rtmp_input_instance_flushes |
Gauge | Buffer flushes performed. |
SRT input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_srt_input_instance_listener_status |
Gauge | Listener status as an integer enum value. |
composer_ext_srt_input_instance_buffering_state |
Gauge | Buffering state: 0=None, 1=Buffering, 2=Buffered. |
composer_ext_srt_input_instance_video_buffer_size_frames |
Gauge | Video buffer depth in frames. |
composer_ext_srt_input_instance_video_buffer_size_ms |
Gauge | Video buffer depth in ms. |
composer_ext_srt_input_instance_audio_buffer_size_ms |
Gauge | Audio buffer depth in ms. |
composer_ext_srt_input_instance_video_audio_sync_ms |
Gauge | Video/audio sync offset in ms. |
composer_ext_srt_input_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_srt_input_instance_flushes |
Gauge | Buffer flushes performed. |
composer_ext_srt_input_instance_buffer_underruns |
Gauge | Buffer under-runs. |
composer_ext_srt_input_instance_video_decode_errors |
Gauge | Video decode errors. |
composer_ext_srt_input_instance_packets_received |
Gauge | Packets received. |
composer_ext_srt_input_instance_rendered_frames |
Gauge | Rendered frames. |
DeckLink input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_decklink_input_instance_playback_state |
Gauge | Playback state as an integer enum value. |
composer_ext_decklink_input_instance_captured_frames |
Gauge | Captured frames. |
composer_ext_decklink_input_instance_playback_frames |
Gauge | Playback frames. |
composer_ext_decklink_input_instance_zero_data_frames |
Gauge | Zero-data frames captured. |
DeckLink output (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_decklink_output_instance_playback_state |
Gauge | Playback state as an integer enum value. |
composer_ext_decklink_output_instance_frames_displayed |
Gauge | Frames displayed. |
MoQ / Packager targets
Per media-over-QUIC output (MoQTarget / packager sink), labelled target_id, target_name, and sink_type. composer_packager_sink_target_count is the only unlabelled roll-up.
| Metric | Type | Description |
|---|---|---|
composer_packager_sink_target_count |
Gauge | Number of MoQTarget/PackagerSink instances. |
composer_packager_sink_target_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_packager_sink_target_reconnection_count_total |
Counter | Total reconnections for this target since process start. |
composer_packager_sink_target_frames_processed_total |
Counter | Total frames processed by this target since process start. |
composer_packager_sink_target_packets_sent_total |
Counter | Total packets sent by this target since process start. |
composer_packager_sink_target_avg_video_processing_time |
Gauge | Average video processing time in ms. |
composer_packager_sink_target_avg_encoding_time |
Gauge | Average encoding time in ms. |
composer_packager_sink_target_avg_total_time |
Gauge | Average total processing time in ms. |
composer_packager_sink_target_peak_video_processing_time |
Gauge | Peak video processing time in ms. |
composer_packager_sink_target_peak_encoding_time |
Gauge | Peak encoding time in ms. |
composer_packager_sink_target_video_input_queue_depth |
Gauge | Video input queue depth. |
composer_packager_sink_target_encoding_input_queue_depth |
Gauge | Encoding input queue depth. |
composer_packager_sink_target_output_queue_depth |
Gauge | Output queue depth. |
composer_packager_sink_target_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s (30-second rolling average). |
MoQ / Packager sources
Per media-over-QUIC input (MoQInput / packager source), labelled id, name, and source_type. composer_moq_input_count is the only unlabelled roll-up.
| Metric | Type | Description |
|---|---|---|
composer_moq_input_count |
Gauge | Number of MoQInput instances. |
composer_moq_input_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_moq_input_reconnection_count_total |
Counter | Total reconnections for this source since process start. |
composer_moq_input_packets_received_total |
Counter | Total packets received by this source since process start. |
composer_moq_input_rendered_frames_total |
Counter | Total frames rendered by this source since process start. |
composer_moq_input_video_frames_decoded_total |
Counter | Total video frames decoded by this source since process start. |
composer_moq_input_audio_frames_decoded_total |
Counter | Total audio frames decoded by this source since process start. |
composer_moq_input_buffer_underruns_total |
Counter | Total buffer under-runs for this source since process start. |
composer_moq_input_video_decode_errors_total |
Counter | Total video decode errors for this source since process start. |
composer_moq_input_video_buffer_ms |
Gauge | Video buffer size in ms. |
composer_moq_input_audio_buffer_ms |
Gauge | Audio buffer size in ms. |
composer_moq_input_incoming_video_bitrate_mbps |
Gauge | Incoming video bitrate in Mbit/s. |
composer_moq_input_incoming_audio_bitrate_mbps |
Gauge | Incoming audio bitrate in Mbit/s. |
composer_moq_input_avg_decode_time_ms |
Gauge | Average video decode time in ms. |
composer_moq_input_peak_decode_time_ms |
Gauge | Peak video decode time in ms. |
composer_moq_input_connect_latency_ms |
Gauge | Last connect latency in ms. |
composer_moq_input_is_congested |
Gauge | 1 if the source is congested, 0 otherwise. |
composer_moq_input_video_audio_sync_ms |
Gauge | Video/audio sync offset in ms. |
Alarms
| Metric | Type | Description |
|---|---|---|
composer_ext_alarms_total_count |
Counter | Total alarms triggered since process start. |
composer_ext_alarms_currently_active |
Gauge | Number of alarms currently active. |
WebSockets
Real-time API traffic — connected clients, throughput, and queue depths.
| Metric | Type | Description |
|---|---|---|
composer_ext_incoming_websocket_messages_total |
Counter | Total WebSocket messages received since process start. |
composer_ext_sent_websocket_messages_total |
Counter | Total WebSocket messages sent since process start. |
composer_ext_websockets_incoming_queue_size |
Gauge | Current inbound WebSocket queue size. |
composer_ext_websockets_outgoing_queue_size |
Gauge | Current outbound WebSocket queue size. |
composer_ext_websocket_processing_time_ms |
Gauge | WebSocket processing time in ms. |
composer_ext_websocket_incoming_message_count_total |
Gauge | Cumulative inbound WebSocket message count. |
composer_ext_websocket_outgoing_message_count_total |
Gauge | Cumulative outbound WebSocket message count. |
composer_ext_websocket_clients_connected |
Gauge | Number of currently connected WebSocket clients. |
composer_ext_websocket_egress_bytes_per_second_average |
Gauge | Average outbound WebSocket throughput in bytes per second. |
composer_ext_websocket_ingress_bytes_per_second_average |
Gauge | Average inbound WebSocket throughput in bytes per second. |
composer_ext_websocket_egress_messages_per_second |
Gauge | Outbound WebSocket messages per second. |
composer_ext_websocket_egress_bytes_per_second |
Gauge | Outbound WebSocket throughput in bytes per second. |
Runtime lifecycle
Process- and session-level metrics for the headless Composer Runtime. composer_runtime_api_calls_total carries an endpoint label.
| Metric | Type | Description |
|---|---|---|
composer_runtime_uptime_seconds |
Gauge | Runtime process uptime in seconds. |
composer_runtime_project_uptime_seconds |
Gauge | Current project session uptime in seconds. |
composer_runtime_project_loaded |
Gauge | 1 if a project is loaded and running, 0 otherwise. |
composer_runtime_projects_started_total |
Counter | Total projects started since runtime launch. |
composer_runtime_reloads_total |
Counter | Total project reloads since runtime launch. |
composer_runtime_api_calls_total |
Counter | Total runtime API calls since runtime launch. (label: endpoint) |
composer_runtime_errors_total |
Gauge | Cumulative errors across all project sessions since runtime launch. |
composer_runtime_warnings_total |
Gauge | Cumulative warnings across all project sessions since runtime launch. |
composer_runtime_last_reload_duration_seconds |
Gauge | Duration of the last project reload in seconds. |
composer_runtime_last_time_to_first_frame_seconds |
Gauge | Time from the last start/reload to the first frame rendered, in seconds. |
composer_runtime_compute_time_ms_short |
Gauge | Average compute time over the last ~100 frames in ms. |
composer_runtime_compute_time_ms_long |
Gauge | Average compute time over the last ~10k frames in ms. |
composer_runtime_congestions |
Gauge | Congestive frames in the current project session. |
composer_runtime_queue_flushes |
Gauge | Worker queue flushes in the current project session. |
Project and API
| Metric | Type | Description |
|---|---|---|
composer_ext_project_fps |
Gauge | Configured project frame rate in frames per second. |
composer_ext_api_call_count |
Counter | Total HTTP API calls since process start. |
composer_ext_allow_grafana_alerts |
Gauge | 1 if Grafana alerts are enabled for this instance, 0 otherwise. |
composer_ext_runtime_state_enum |
Gauge | Runtime lifecycle state exposed as an integer enum value. |
The /metrics endpoint is self-describing: each metric carries its own # HELP and # TYPE lines. The tables above are kept in sync with the engine's metric definitions, but pointing a browser at a running instance's /metrics endpoint always shows the exact set emitted by that specific build.