bitfocus / companion

Bitfocus Companion enables the reasonably priced Elgato Streamdeck and other controllers to be a professional shotbox surface for an increasing amount of different presentation switchers, video playback software and broadcast equipment.
http://bitfocus.io/companion
Other
1.53k stars 498 forks source link

Prometheus endpoint #2424

Open elliotmatson opened 1 year ago

elliotmatson commented 1 year ago

Is this a feature relevant to companion itself, and not a module?

Is there an existing issue for this?

Describe the feature

Having a Prometheus endpoint that exposes module variables and connection status would be really helpful, that way I could log the state of a production system over time, and more effectively troubleshoot issues that happened while I was away, and would let people use tools like Grafana to visualize system status and monitor key metrics.

Usecases

Julusian commented 1 year ago

I am thinking that a MVP would be to dump connection status, and all 'defined' variables (ignoring the ones without definitions) into this endpoint. It should be disabled by default, to reduce the risk of impact to users who will not make use of it.

As a follow up, there should be a way to reduce the amount of variables included here. That could be through defining some regexes in the settings tab, or perhaps something in the modules-api to assist with filtering

Q) In the future would it also be good to have a method in the module-api to allow for modules to add some custom fields here? Or will that be add another level of almost variables, but not really variables and make things more confusing/inconsistent?

elliotmatson commented 1 year ago

I think the MVP sounds great!

Maybe we could distinguish things by "variables" and "statistics"? That would help clarify the purpose of each data type. I personally can't think of any values in the modules I regularly use that would work best as a statistic and not a variable, but that's just me