This article will demonstrate the configuration of new capability added in ACE 12.0.7.0 which supports OpenTelemetry trace for an integration server and observe the transactions on Jaeger.
This article also explains how OpenTelemetry can be configured in the integration runtime of an ACE operator in Red Hat Openshift and view the spans in Jaeger on Red Hat Openshift. It will also show how to configure OpenTelemetry in the integration runtime of an ACE On-Prem and view the spans in Jaeger On-Prem.
Configuring OpenTelemetry trace for an integration server (On-Prem)
OpenTelemetry can be enabled for an integration server by editing the “ResourceManagers” section in the server.conf.yaml file:
ResourceManagers:
OpenTelemetryManager:
openTelemetryEnabled: true # Enable or disable OpenTelemetry tracing.
exporterOStreamFilename: 'C:\tele\OpenTelemetryTrace_Simple.txt'
openTelemetrySpanProcessor: 'simple' # Specify the OpenTelemetry span processor ['batch' or 'simple'].
#exporterOtlpGrpcEndpoint: '' # Specify a GRPC endpoint to which OpenTelemetry span data is sent. For example, '<hostname>:4317'.
exporterOtlpHttpUrl: 'http://localhost:4318/v1/traces' # Specify a HTTP Url to which OpenTelemetry span data (json) is sent. For example, 'http://<hostname>:<port>/v1/traces'.
#openTelemetryServiceName: '' # Override the Service Name attribute for telemetry spans. Defaults to integration server name.
#openTelemetryHostName: '' # Override the value of the Hostname attribute for telemetry spans.
#openTelemetryTruststoreType: '' # The type of the open telemetry truststore [PKCS12, PEM or JKS]. Only used for the GRPC exporter.
#openTelemetryTruststoreFile: '' # The location of the open telemetry truststore. Only used for the GRPC exporter.
#openTelemetryTruststorePass: '' # Credential or resource alias containing the truststore password. Only used for the GRPC exporter.
#openTelemetryTrustAlias: '' # The alias of the trust certificate in the PKCS12 or JKS truststore.
#openTelemetrySpanProcessor: 'batch' # Specify the OpenTelemetry span processor ['batch' or 'simple'].
#openTelemetryBatchSpanOptions: '' # Specify the OpenTelemetry batch span processor options.
Sending the data to a file
The following entries in the template will enable OpenTelemetry and the data will be written to a file in JSON format:
OpenTelemetryManager:
openTelemetryEnabled: true
exporterOStreamFilename: ''C:\tele\OpenTelemetryTrace_Simple.txt'
The flow consists of a simple HTTPInput HTTPReply node :
The output below captures one span for the HTTPInput node:
Sending the Data to the Jaeger Backend
Jaeger is a OpenSource version of an OpenTelemetry collector/viewer and Jaeger can support both GRPC and HTTP/JSON formats. The following entries in the server.conf.yaml will send the data to Jaeger.
ResourceManagers:
HTTPConnector:
ListenerPort: 7802
OpenTelemetryManager:
openTelemetryEnabled: true # Enable or disable OpenTelemetry tracing.
OpenTelemetry is only available on the Linux/x86-64 platform
exporterOStreamFilename: 'C:\tele\OpenTelemetryTrace_Simple.txt'
openTelemetrySpanProcessor: 'simple' # Specify the OpenTelemetry span processor ['batch' or 'simple'].
exporterOtlpHttpUrl: 'http://localhost:4318/v1/traces' # Specify a HTTP Url to which OpenTelemetry span data (json) is sent. For example, 'http://:/v1/traces'.
Here Jaeger is running on the same host as my IntegrationServer and the Jaeger UI is running on http://localhost:16686 which is the default port.
The Jaeger program “jaeger-all-in-one.exe “ can be started with the following arguments:
jaeger-all-in-one.exe --collector.otlp.enabled=true --collector.otlp.grpc.host-port=":4317" --collector.otlp.http.host-port=":4318"
The application is an end-to-end HTTP application, which has multiple flows:
The Jaeger UI displays the Service Name and the operations as shown below: