membraneframework / membrane_core

The core of the Membrane Framework, multimedia processing framework written in Elixir
https://membrane.stream
Apache License 2.0
1.31k stars 39 forks source link

Collect and present telemetry data #259

Closed mat-hek closed 4 years ago

mat-hek commented 4 years ago

We need a convenient way to analyze certain properties of elements, bins and pipelines. The data for analysis should be collected and presented in realtime. For that, we need components for

Reporting properties

The simplest way would be just to send messages to the collecting component, and that can be the way to start with. If the performance won't be sufficient, we can consider grouping reports together, pooling from the collecting component etc

Collecting reports

Can be done with some designated erlang process (or a pool of them), using some existing telemetry backend or both of them. Some backends that may be used:

Frontend for displaying data

It also may be either our own solution or an existing one, however it would be very useful to be able to display pipeline graphs there. Own solution could be improved to enable interactive pipeline reconfiguration in the future. That being said, an existing solution will be easier to start with. The frontend should be able to receive reports from a remote server.

Properties to collect

Hajto commented 4 years ago

My friend recommended avoiding Influxdb due to its high memory consumption (https://docs.influxdata.com/influxdb/v1.8/guides/hardware_sizing/#when-do-i-need-more-ram) and lengthy backup (baking a backup was 10hrs for him, 15 million records). He recommended considering timescale https://www.timescale.com.