Since version 6.5.10, Ceptor supports OpenTelemetry.
OpenTelemetry is an ideal method for collecting Tracing between different components and detecting performance issues. It is an API that has many different implementation from free and Open Source tools like Jaeger to more expensive and full features tools such as Dynatrace.
Much more information at https://opentelemetry.io
Ceptor OpenTelemetry Support is a separate module, please check your license before using it or contact support@ceptor.io if you have any questions.
Ceptor OpenTelemetry Support Overview
Ceptor Gateway has full OpenTelemetry support for HTTP requests and responses. In addition, all Ceptor modules have OpenTelemetry support when communicating between each other - the peer2peer proprietary communication protocol Ceptor has been using since 2000 supports OpenTelemetry and can carry along trace information between components. This gives you full visibility e.g. if a web request in the gateway is delayed because a login done in the Ceptor Session Controller is delayed because of database issues, then you can immediately see the reason for any slowness.
Also it is great for troubleshooting or simply gaining an overview over how requests flow through your entire setup with all your applications.
Support is automatically present in all Ceptor modules, including the Ceptor Agent - but note that it requires minimum java 1.8 in the Agent.
For Ceptor Gateway (and the deprecated Ceptor Dispatcher ) support need to be enabled specifically since there is an overhead in measuring HTTP traffic it is not enabled by default.
Ceptor calls the OpenTelemetry open-source API, but requires and implementation from a tracer product like Dynatrace or OpenTelemetry Agent to actively work.
Using OpenTelemetry with Dynatrace
Dynatrace supports detection and instrumentation automatically, but Context Propagation need to be enabled in Dynatrace configuration before it works - without it you will not be able to see the entire chain of requests between servers and services, both within and outside Ceptor.
To enable this, go to Dynatrace settings and Server-side service monitoring, then add a Span context propagation, choosing match for “Span kind Equals Client” - this will make it work.
Using OpenTelemetry Agent
OpenTelemetry Agent can be injected into the java runtime that Ceptor uses. This requires some JVM options to be added.
In Ceptor’s launcher.xml you can add the following options to the JVM startup.
Note that for the Ceptor Gateway, -Dotel.instrumentation.undertow.enabled=false
informs the agent not to attempt to instrument the Undertow webserver that Ceptor relies upon - this instrumentation conflicts with Ceptor's own.
-javaagent:${ceptor.home}/opentelemetryagent/opentelemetry-javaagent.jar -Dotel.instrumentation.undertow.enabled=false -Dotel.service.name=Ceptor-Gateway
This must be added to all JVMs you wish to instrument (the -Dotel.instrumentation.undertow.enabled option is only needed for Ceptor Gateway)
You can find full documentation on OpenTelemetry’s pages on what other configuration options are available - start here:
https://opentelemetry.io/docs/instrumentation/java/automatic/… and for information about configuration, see the Agent Configuration pages here:
https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/Normally you will need to setup OTLP export of data from the JVM to Jaeger or whatever other product you are using - you can find everything you need on this topic on OpenTelemetry’s documentation pages.