Configuring OpenTelemetry trace for an integration server
You can configure OpenTelemetry trace for all message flows in an integration server and export span data to an OpenTelemetry collector.
About this task
OpenTelemetry trace is supported for IBM® App Connect Enterprise integration servers on the Linux® x86-64, Linux zSeries, Linux on POWER® Systems - Little Endian, AIX®, and Windows platforms.
When OpenTelemetry is enabled for an integration server, spans are created for all message flow nodes that support OpenTelemetry, including callable flow nodes. For supported transport input nodes, spans are created and then run until the message flow transaction for the flow is completed or rolled back. For supported transport request nodes, spans are created and then run for the duration of the node interaction with the transport (for example, sending and receiving an HTTP message).
- MQ:
- MQGet node
- MQInput node
- MQOutput node
- MQPublication node
- MQReply node
- HTTP:
- HTTPAsyncRequest node
- HTTPAsyncResponse node
- HTTPInput node
- HTTPReply node
- HTTPRequest node
- REST:
- RESTAsyncRequest node
- RESTAsyncResponse node
- RESTRequest node
- SOAP:
- SOAPAsyncRequest node
- SOAPAsyncResponse node
- SOAPInput node
- SOAPReply node
- SOAPRequest node
When OpenTelemetry trace is enabled, a message flow span is created for callable flows starting with a CallableInput node, and a span is created around the CallableFlowInvoke node. For asynchronous callable flow nodes, a message flow span is created for flows starting with a CallableFlowAsyncResponse node, and a span is created around the CallableFlowAsyncInvoke node.
- CallableInput
- CallableReply
- CallableFlowInvoke
- CallableFlowAsyncInvoke
- CallableFlowAsyncResponse
You can enable and configure OpenTelemetry trace by setting properties in the OpenTelemetry section of the server.conf.yaml file. By default, OpenTelemetry trace is not enabled.
opentelemetry
credential, by
setting properties in the OpenTelemetry section of the
server.conf.yaml file:
#openTelemetryHttpSecurityId: '' # Specify an opentelemetry credential used in the HTTP exporter.
#openTelemetryGrpcSecurityId: '' # Specify an opentelemetry credential used in the GRPC exporter.
You set the openTelemetryHttpSecurityId and openTelemetryGrpcSecurityId properties to the name of a credential in the vault, with a credential-type of opentelemetry. The details that are retrieved from the referenced credential are then populated into the HTTP Authorization header. The value of the openTelemetryGrpcSecurityId property determines the credential that is used to configure the GRPC exporter, and the value of the openTelemetryHttpSecurityId property determines the credential that is used to configure the HTTP exporter.
basic
, accessToken
, or
apiKey
. The authentication type sets the schema in the HTTP Authorization header in
the requests that are sent to the OpenTelemetry backend, in the form Authorization:
<schema> credentials
. The authentication types set the schema to either
Basic
, Bearer
, or ApiKey
, as shown in the
following table:
Credential auth-type | HTTP header |
---|---|
basic | Authorization: Basic <username>:<password> |
accessToken | Authorization: Bearer <access-token> |
apiKey | Authorization: ApiKey <api-key> |
For the Basic
and ApiKey
schema, the credentials are Base64
encoded.
For more information about using OpenTelemetry, see OpenTelemetry considerations and limitations and Turning off OpenTelemetry for a message flow.
Procedure
Configure OpenTelemetry trace for all flows on an integration server by completing the following steps: