multiparty-meeting/prom.md

2.6 KiB

Prometheus exporter

The goal of this version is to offer a few basic metrics for initial testing. The set of supported metrics can be extended.

The current implementation is unconventional in that it creates new metrics each time but does not register a custom collector. Reasons are that the exporter should clear out metrics for closed connections but that prom-client does not yet support custom collectors.

This version has been ported from an earlier Python version that was not part of multiparty-meeting but connected as an interactive client.

Configuration

.env description
DEBUG e.g. *WARN*,*ERROR*,*:prom for debugging
PROM_DEIDENTIFY if set, deidentify IP addresses
PROM_NUMERIC if set, show numerical IP addresses
PROM_PORT if set, enable exporter on this port
PROM_QUIET if set, include fewer labels

License

MIT License (without copyright notice)

Metrics

metric value
edumeet_peers
edumeet_rooms
mediasoup_consumer_byte_count_bytes byteCount
mediasoup_consumer_score score
mediasoup_producer_byte_count_bytes byteCount
mediasoup_producer_score score

Architecture

+-----------+      +---------------------------------------------+
| workers   |      | server                    observer API      |
|           | sock |                    +------o------+----o-----+
|           +------+                    | int. server | exporter |
|           |      |                    |             |          |
| mediasoup |      | express  socket.io |     net     | express  |
+-----+-----+      +----+---------+-----+-----+-------+-----+----+
      ^ min-max         ^ 443     ^ 443       ^ sock        ^ PROM_PORT
      | RTP             | HTTPS   | ws        |             | HTTP
      |                 |         |           |             |
      |               +-+---------+-+  +------+------+  +---+--------+
      +---------------+     app     |  | int. client |  | Prometheus |
                      +-------------+  +-------------+  +------------+