Fabasoft app.telemetry works with performance data that is supplied by the monitored applications. The following methods can be used to provide these performance data:
Fabasoft app.telemetry ships with modules for Apache and Microsoft Internet Information Services. These modules already have instrumentation points implemented and can be installed or configured into Apache or Microsoft Internet Information Services.
These modules allow a fast overview of a web application's response time characteristics at the web server (Apache or Microsoft Internet Information Services) tier but cannot provide performance data from the monitored application. Refer to the next chapters for how to receive performance data from monitored applications.
Applications can use the Fabasoft app.telemetry SDK to supply performance data to Fabasoft app.telemetry. Currently this is the most powerful method but it requires modification of the applications.
Using the Fabasoft app.telemetry SDK application developers can manually implement instrumentation points in the source code of the monitored application. This implementation also requires a rebuild/recompile and a redeployment of the affected application.
The Fabasoft app.telemetry SDK for C/C++, C# and Java is available on all agent platforms and supports the following interfaces (a list of all supported interface versions can be found in the “Software Product Information” document for Fabasoft app.telemetry):
The Fabasoft app.telemetry SDK enables application developers to integrate their applications into Fabasoft app.telemetry. Applications can integrate by registering themselves into Fabasoft app.telemetry and by providing performance data (events). The Fabasoft app.telemetry SDK provides the following integration possibilities:
Applications can register themselves into Fabasoft app.telemetry and therefore can help to reduce manual configuration efforts.
Fabasoft app.telemetry provides the functionality of Software-Telemetry sessions. A Software-Telemetry session can be started by selecting a registered application, by selecting one of the supported recording levels and by choosing an application specific filter value. The SDK provides the possibility for applications to register their application specific filter values.
In a Software-Telemetry session applications provide information that help analyzing the route of a request. Per default, the result of a Software-Telemetry session is partitioned in applications and servers as well as processes or threads. The SDK provides the possibility for applications to detail these partitions by using modules. A module is a part of an application that allows a better view of the request’s route within the application itself.
In a Software-Telemetry session registered applications provide information by using events. Each event consists of an id (unique id within an application module) and a text description. To reduce the amount of data transferred during a Software-Telemetry session, the SDK provides the possibility for applications to register their application specific events (id and text) so applications only have to pass the event id during an active Software-Telemetry session.
In a Software-Telemetry session registered applications provide information by using events. By sending events applications can provide the following information to Fabasoft app.telemetry:
Applications provide recording level information (standard, detail or debug) for each event sent. Depending on the selected recording level of the current Software-Telemetry session, only events matching that selected recording level get transported to the Fabasoft app.telemetry server.
In a Software-Telemetry session a request can be tracked through multiple threads, processes or services of integrated applications. The Fabasoft app.telemetry SDK provides the possibility for applications, to pass the therefore required information to Fabasoft app.telemetry. Applications can allocate a context to start the recording of a request and release a context to end the recording of a request. To pass a context between threads or processes applications get the current context on the calling side, transport the context and attach to that context on the called side. The transfer of the context must be implemented by the application.