OpenTelemetry Agent Instrumentation With Tenant-Aware Class Loading
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current instrumentation techniques for OpenTelemetry™ APIs struggle to keep up with the complexities of instrumenting across disparate systems, tools, and layers in a network architecture, making it difficult to piece together monitoring and logging data and connect the chain of events and cause and effect.
Innovation Solution
An advanced agent instrumentation method using ClassLoading is employed to intercept telemetry invocations, allocate implementation tenants, and perform interception operations using direct telemetry class and method calls, ensuring proper instrumentation and compatibility with Java 9+ environments.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If current instrumentation techniques are used for OpenTelemetry APIs, then instrumentation can be implemented, but it cannot keep up with the complexities of instrumenting across disparate systems, tools, and layers in a network architecture
Solution Approach 1:
The patent introduces a ClassLoading intermediary mechanism that acts as a mediator between the instrumentation system and OpenTelemetry APIs. This ClassLoading system discovers available loaders, allocates implementation tenants, and manages class loading dynamically, thereby handling the complexity of instrumenting across disparate systems without requiring the instrumentation technique itself to become increasingly complex.
2Productivity
If multiple tenants share a Java agent, then resource utilization improves, but compatibility with Java Platform Module System (JPMS) and class loading complexities increase
Solution Approach 1:
The patent segments the Java agent into multiple implementation tenants, where each tenant is isolated and managed independently through the ClassLoading system. This segmentation allows multiple tenants to share the Java agent infrastructure while maintaining separate class loading contexts, thus improving resource utilization without compromising JPMS compatibility.
Solution Approach 2:
The ClassLoading system dynamically discovers available loaders and allocates implementation tenants based on runtime conditions. This dynamic approach allows the system to adapt to different Java versions and JPMS configurations, managing class loading complexities automatically while enabling multiple tenants to share the agent efficiently.
3Productivity
If direct telemetry class and method calls are used, then instrumentation efficiency improves, but ensuring proper instrumentation and compatibility across different implementations becomes more difficult
Solution Approach 1:
The ClassLoading system serves as an intermediary that manages direct telemetry class and method calls. It discovers the correct implementations, allocates appropriate tenants, and ensures that direct calls are made to the right classes and methods. This intermediary layer maintains instrumentation efficiency while ensuring reliability across different OpenTelemetry implementations.
Data Source
AI summary
In one embodiment, a method herein comprises: intercepting runtime calls from a telemetry invocation for method entry to discover loaders; determining whether an implementation tenant is already allocated for a particular discovered loader; allocating, in response to no implementation tenant being already allocated for the particular discovered loader, a particular implementation tenant from a plurality of available implementation tenants, wherein a corresponding loader for the particular implementation tenant is set to delegate from the particular discovered loader; and calling, in response to the particular implementation tenant being allocated or being already allocated for the particular discovered loader, a method entry for the particular implementation tenant to perform an associated interception operation while using direct telemetry class and/or method calls.


