We recently announced the beta releases of the Dynatrace OneAgent SDK for C/C++ and other native applications, Java and Node.js. Unlike other custom tracing SDKs that focus on delivering lots of data without answers, the Dynatrace OneAgent SDK was designed with the primary goal of extending our AI-based root cause analysis. Moreover, it’s fully integrated into Dynatrace and there’s no difference between SDK and out-of-the-box functionality. You get full access to all diagnostics, analysis, and monitoring functionality.
Extend AI-based root cause analysis
At Dynatrace, we track AI-detected problems, which are opened when Dynatrace detects performance anomalies with your applications that impact your customers, server-side services, or infrastructure components. Dynatrace AI automatically pinpoints the underlying reasons for such problems and gives you a head start in resolving performance problems via AI-driven deep-dive analysis into your source code and database statements.
The value of Dynatrace AI is built upon the quality of the data we collect. Dynatrace OneAgent automatically collects full-stack monitoring data from across your monitored environment. A single OneAgent per host collects all relevant monitoring data—even when your hosts are deployed within Docker containers, microservices architectures, or cloud-based infrastructure. OneAgent works for most technologies out of the box. For full details, see supported environments and technology versions.
In the rare case that your custom framework or technology isn’t (yet) supported out-of-the-box, you may miss out on relevant information that can be provided via Dynatrace AI-based root cause analysis. In the example below, Dynatrace reports a degradation in the response time of certain user actions. Response time degradation of the service
BookingService is identified as the root cause of this problem.
Following further analysis—either by talking with the development team responsible for the service
BookingService or by performing CPU hotspot analysis, we discover that
BookingService calls a native service through a proprietary protocol. In the past, you could have defined a custom service in Dynatrace to monitor such a service from the outside. Now, with the OneAgent SDK, you can go a step further and monitor such a service from the inside.
Once the new version of the application using the OneAgentSDK is deployed, Dynatrace shows a different service flow—the missing native service
CreditCardValidation is now revealed as well as an additional database service
easyTravelBusiness called directly via the
CreditCardValidation service (see Service flow below).
These services are instantly picked up by our AI-based root cause analysis. Now that Dynatrace AI has the whole picture, the next time a degradation is detected, the problem analysis provides a better-informed answer that identifies certain database calls (down to the exact SQL statement) as being the real root cause of this issue.
Code-level visibility for C++, Python, Ruby, Perl, & Erlang
C++, Python, Ruby, Perl, and Erlang can all make calls to C via language bindings. This is why we released the OneAgent SDK for C/C++. Using the SDK for C/C++, you can extend the already extensive list of technologies supported by OneAgent to get code-level visibility for these languages. We don’t plan to add a wrapper for all these languages, but stay tuned for the first release of the Python language bindings, which is coming soon. Let us know if you build additional language bindings on top of the SDK and want to share them. We’ll be happy to host these in our GitHub repository.
In addition to the OneAgent SDK for C/C++, we’ve also recently released the OneAgent SDK for Java and Node.js. OneAgent SDK for .NET will be released later this year. Many frameworks and database services are already supported out-of-the-box for these technologies. There are however scenarios (for example, proprietary socket communication between two services) that can’t be covered automatically. With only a few lines of code and the OneAgent SDK, you can now add code-level visibility for such calls.
How to use the Dynatrace OneAgent SDK
As the OneAgent SDK works hand-in-hand with Dynatrace OneAgent, no additional configuration is required.
The main requirements for using the OneAgent SDK are:
- Access to the source code of the application (and willingness to change the code)
- As the OneAgent SDK communicates directly with OneAgent, OneAgent needs to be installed and running on the host that runs the application. Container environments are supported.
The picture below shows how easy it is to start tracing a custom remoting call using the OneAgent SDK. The technical documentation and detailed sample code examples can be found on the GitHub repositories for each language implementation of the OneAgent SDK.
How can I contribute?
The OneAgent SDK is an open source project, available on GitHub. All user contributions (from additional language bindings for C/C++ SDK, to the reporting of minor defects, issues, or typos) are welcome! The best way for you to do this is via the GitHub repository issue tracker. You can also comment on our roadmap thread in AnswerHub.
Stay tuned for the following upcoming announcements:
- Early Access Program release of the Python SDK (based on the C/C++ SDK) is coming soon
- OneAgent SDK for. NET will be released later this year
- Continuous improvements and new features for the C/C++, Node.js, and Java SDK