-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Users of MP Telemetry will expect to be able to use the technology across different servers that are running with apps that
depend on different JEE / Jakarta EE levels. Monitoring tools that interface with MP Telemetry often provide dashboards which
render context and signal data from spans, metrics and logs and that rely on the exact names of metrics or attributes.
Consistency of telemetry names/values
- Problem: if MP Telemetry v1.1 exposes a metric A, and MP Telemetry v2.0 renames that metric to B, and if MP Telemetry versions each only work with a subset of currently prevalent EE apps, then monitoring tools need to have 2 different dashboards -- one for apps running with MP Telemetry v1.1 and one for apps running with MP Telemetry v2.0. This problem can be foreseen as OpenTelemetry gradually modifies metric names on their way to becoming part of stable semantic conventions.
- To ensure all apps can be monitored using the same dashboard regardless of EE version, there are a few solution options:
-
option 1a
-
Have MP Telemetry include a configurable instrumentation version to be used for choosing which metric/span/attribute names/values to use. The instrumentation version would ideally be respected by all spans/metrics emitted by runtimes and MP Telemetry-enabled components. Newer releases of MP Telemetry would be required to be able to use metric/span/attribute names/values used by all older releases (backward compatibility).
-
Pro: no configuration change required to the OTel Collector
-
Pro: app owners can configure their new MP Telemetry compatible runtime to use the same metric/span/attribute names/values as older releases of MP Telemetry. That means they can use the dashboards that were compatible with the older releases.
-
Con: app owners can't use dashboards that are compatible with the new release of MP Telemetry until all apps have been upgraded to an EE level supported by the new MP Telemetry.
-
-
option 1b
-
same as option 1a, plus older releases of MP Telemetry would be required to be able to use metric/span/attribute names/values defined by all newer releases (forward compatibility).
-
Pro: no configuration change required to the OTel Collector
-
Pro: app owners can configure their new MP Telemetry compatible runtime to use the same metric/span/attribute names/values as older releases of MP Telemetry. That means they can use the dashboards that were compatible with the older releases.
-
Pro: app owners can configure their old MP Telemetry compatible runtime to use the same metric/span/attribute names/values as new releases of MP Telemetry. That means they can use the dashboards that are compatible with new releases.
-
-
option 2
-
Publish OTel Collector configurations that would enable deployers of the collector to rename incompatible metric/span names/labels/values using https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor (stability alpha). Each new MP Telemetry release would publish a configuration to switch all names/values to those used in all older releases. Each old MP Telemetry release would publish a configuration to switch all names/values to those used in all newer releases.
-
Pro: app owners can configure their new MP Telemetry compatible runtime to use the same metric/span/attribute names/values as older releases of MP Telemetry. That means they can use the dashboards that were compatible with the older releases.
-
Pro: app owners can configure their old MP Telemetry compatible runtime to use the same metric/span/attribute names/values as new releases of MP Telemetry. That means they can use the dashboards that are compatible with new releases.
-
Con: app owners have to coordinate changes to OTel Collector configuration with the deployers that control the OTel Collector setup. May not be welcome in environments where the OTel Collector is shared.
-
-
I believe the best options are 1b or 2. Looking for opinions on which is better.