Telemetry code enhancements/cleanup

  • Allow to enable telemetry via env vars from pure clients, move handling from DeviceImpl::initialize_telemetry_interface into Configuration ctor, rework SilentKernelScope handling
  • Get rid of get_default_interface and friends
  • We should cleanup the required dependent packages. We are currently requiring everything, but see https://github.com/open-telemetry/opentelemetry-cpp/blob/main/docs/dependencies.md#external-dependencies
  • Get debug build on windows working, https://gitlab.com/tango-controls/windows-ci/opentelemetry/-/tags/v7
  • Remove TANGO_HOST from telemetry data when using nodb and or filedb
  • Add env variable for DServer tracing
  • Rework Interface member functions to have one pair of is_XXX and set_XXX(bool) functions for each tracing option (kernel, plain, dserver)
  • Fix Interface::enable/disable which does not do anything right now. Or remove it.
  • Telemetry: Seems like context isn't passed from client to device across process boundaries anymore, so spans related to same call (e.g., read_attribute) don't share the same parent. Anton thinks it was working back in December 2023, but hasn't tested with multiple processes since then (just a single process with MultiDeviceTestContext).
  • Adapt release/builds gitlab CI job to account for new build variants
  • Add off option for TANGO_TELEMETRY_LOGS_EXPORTER/TANGO_TELEMETRY_TRACES_EXPORTER
  • Add opentelemetry-cpp version to DeviceImpl::real_ctor() with add_version_info
  • Remove StdUniqueToNostdShared, see https://github.com/open-telemetry/opentelemetry-cpp/issues/3101#issuecomment-2418969091 how this can be done. And remove the storage of gobal providers, we can always get them as singleton.

Related to !1197 (merged)

Edited by Matt Auger-Williams