Skip to content

HistogramManager Implementation and User-Friendliness Improvements

Claire Antel requested to merge cantel-porting into master

HistogramManager

  • Short description:
    • HistogramManager lets users register histograms via its service. It takes care of periodically (user configurable, default is every minute) publishing histograms. The user takes care of filling the histogram via the HistogramManager.
    • Only if stats_uri is provided under settings in the configuration file are histograms published over the socket. Else, only a message including the histogram contents is printed to log.
  • New/Modifications:
    • Utils: Histogram class that makes use of boost::histogram.
    • Utils: HistogramManager class
    • scripts/monitoring: metrics_handler minor change: value=data.split()[1].decode() -> value=data.split(b': ')[1].decode()
  • To dos (not implemented):
    • 2D histograms
    • Make HistogramManager optional for Monitoring Module - currently it is always turned on, even if the module does not make use of histograms.
    • Possibly make use of own histograms socket. Currently the daqling Statistics socket is being used - might cause problems if stats socket fails to set up.

Other

  • Rework of unpacking of data in monitoring:
    • Option to unpack event header, fragment header or headers + raw fragment - whatever is needed for monitoring.
    • More error handling: check markers.
  • Monitor base class takes care of retrieving data over connection. Derived(User) classes only need to fill in monitor(binary data) function.
  • Fixes:
    • Avoid blow-up of metrics at start of run
  • Adding Grafana json settings (for recording purposes).
Edited by Claire Antel

Merge request reports