Self-hosted agent configuration to share data with external systems
Use the following configuration to share traces from the End-to-End Monitoring self-hosted agent to targets such as messaging queues or external Application Performance Monitoring (APM) systems or custom targets being used to store monitoring data.
Pre-requisites
- Install the self-hosted IBM® Products like Integration Server, Microservices Runtime, or API Gateway for the version of your choice with the latest fixes.
- For Integration Server V10.15 or later, download the latest JDK 17 compliant fix version.
Integration Server package-based agent setup for hybrid monitoring
To start a new installation of IS package-based Hybrid Monitoring Agent, follow the instructions available To start a new installation of the IS package-based Hybrid Monitoring Agent.
IBM webMethods Installer based agent setup for hybrid monitoring
To start an installation of IBM webMethods Installer-based Hybrid Monitoring Agent, follow the instructions available Setup that uses IBM webMethods Installer.
OTLP common configuration
Update the following properties according to your requirements in the agent.conf
file:
| Property | Description | Sample value |
|---|---|---|
collector.establish_cloud_communication |
Use this property to enable or disable communication from agent to cloud collector. Set this property to false to enable the OTLP support. Setting this property is mandatory for OTLP support. | $ The default value is true. |
exporter.establish_external_communication |
Use this property to establish a connection to an external target system for
pushing End-to-End Monitoring traces. Set this property to true to enable the OTLP
support. Setting this property is mandatory for OTLP support. |
${SW_AGENT_EXTERNAL_ESTABLISH_COMMUNICATION:false} The
default value is false. |
exporter.default_target |
Use this property to set your default OTLP target server. | ${SW_AGENT_EXTERNAL_TARGET:apm}
apm, kafka or custom target
|
exporter.target_name |
Use this property to set the external target system name. Setting this property is optional. | ${SW_AGENT_EXTERNAL_TARGET_NAME:<target_name>} |
exporter.batch_size |
Use this property to control the number of records that are sent in a single request to the target server. | ${SW_AGENT_EXT_BATCH_SIZE:2000} The default value is
2000. |
exporter.healthcheck_interval |
Use this property to set a target server health check interval in seconds. | ${SW_AGENT_EXTERNAL_API_HEALTH_CHECK_INTERVAL:60} The default
value is 60. |
For custom implementation configurable properties, click Custom implementation configurable properties.
<INSTALL-DIR>\IntegrationServer\instances\default\logs\e2eagentOtlpTraces.logDevelop Anywhere, Deploy Anywhere (DADA) configuration
End-to-End Monitoring supports the capability to transfer Develop Anywhere, Deploy Anywhere transaction traces to OTLP targets. The following mandatory environment variables are required to be assigned when you start the Edge Runtime (ERT) container:
| Environment Variable | Description | Sample value |
|---|---|---|
SW_AGENT_COLLECTOR_ESTABLISH_CLOUD_COMMUNICATION |
Use this property to enable or disable communication from agent to cloud collector. Set this property to false to enable the OTLP support. Setting this property is mandatory for OTLP support. | false |
SW_AGENT_EXTERNAL_ESTABLISH_COMMUNICATION |
Use this property to establish a connection to an external target system for
pushing End-to-End Monitoring traces. Set this property to true to enable the OTLP
support. Setting this property is mandatory for OTLP support. |
true |
SW_AGENT_EXTERNAL_TARGET |
Use this property to set the external target system name. Setting this property is optional. | The default value is apm. |
SW_AGENT_OTEL_ENDPOINT |
Use this property to update the endpoint URL of the external target APM server. | https://<otlp_endpoint>/v1/traces |
SW_AGENT_OTEL_HEADERS |
Use this property to provide key value pairs that contain authorization tokens and required headers that are separated by commas. The header key and value are separated by '#'. The external target system requires valid headers. | api-key#value,Content-Type#application/x-protobuf |
Sample Docker command
docker run -p 5555:5555 -d -e SAG_IS_CLOUD_REGISTER_URL=https://abc02.stag-int-aws-us.webmethods.io -e SAG_IS_EDGE_CLOUD_ALIAS=EdgeRuntime_E2EM_ERT -e SW_AGENT_OTEL_ENDPOINT=https://<otlp_endpoint>:4318/v1/traces -e SW_AGENT_OTEL_HEADERS=api-key#xxxxxxxxxxxxxxxxxxxxxxxxxFFFFNRAL,Content-Type#application/x-protobuf -e SW_AGENT_EXTERNAL_ESTABLISH_COMMUNICATION=true -e SW_AGENT_COLLECTOR_ESTABLISH_CLOUD_COMMUNICATION=false -e SAG_IS_CLOUD_REGISTER_TOKEN=yyyyyyyyyy --name=E2EM_ERT iregistry.infra.webmethods.io/aim/msr-edge-runtime:11.0.7
OTLP Configuration based on target server
APM-specific configuration for target server
Update the following attributes in the agent configuration, if you need to push End-to-End Monitoring trace data directly to an APM tool like Dynatrace or New Relic.
The following example shows attributes for Honeycomb APM.
| Property | Description | Sample value |
|---|---|---|
exporter.url |
Use this property to update the endpoint URL of the external target APM server. | ${SW_AGENT_OTEL_ENDPOINT:<OTLP_ENDPOINT>}. For Example,
https://<otlp_endpoint>/v1/traces |
exporter.headers |
Use this property to provide key value pairs that contain authorization tokens and required headers that are separated by commas. The header key and value are separated by '#'. The external target system requires valid headers. | ${SW_AGENT_OTEL_HEADERS:<REQUIRED_HEADERS>} Example:
api-key#value,Content-Type#application/x-protobuf |
exporter.username |
Use this property to provide the username of the target server. | ${SW_AGENT_EXT_SYSTEM_USER:<username>} |
exporter.password |
Use this property to provide the password of the target server. | ${SW_AGENT_EXT_SYSTEM_PASSWORD: <password>} |
exporter.support_long_id |
Use this property to support Trace ID lengths exceeding 16 bytes. Setting this property is optional. | ${SW_AGENT_EXTERNAL_SUPPORT_LONG_ID:false} Default value is
false. This is the recommended value. |
exporter.api_error_codes |
API error codes for target server health check. Add extra codes according to your requirement. | ${SW_AGENT_EXTERNAL_API_ERROR_CODES:502,503,504} The default
values are 502,503,504 |
exporter.resource_attributes |
Use this property to provide comma-separated key value pairs that contain resource attributes. The attribute key and value are separated by '#'. | ${SW_AGENT_OTEL_RESOURCE_ATTRIBUTES:<OTLP_RESOURCE_ATTRIBUTES>} Example:
service.name#example_service, service.namespace#example_service_namespace |
Supported APM systems
The following APM systems have been verified with End-to-End Monitoring:
| APM target server | Supported | Supported Version | Remarks |
|---|---|---|---|
| Honeycomb | Yes | V10.15 Fix 8 | |
| LightStep(Service Now) | Yes | V10.15 Fix 8 | |
| Dynatrace | Yes | V10.15 Fix 9 | |
| New Relic | Yes | V10.15 Fix 9 | |
| Grafana Tempo | Yes | V10.15 Fix 9 | |
| Jeager | Yes | V10.15 Fix 9 | |
| Cisco Appdynamics | Yes | V10.15 Fix 9 | |
| IBM Instana® | Yes | V10.15 Fix 9 | |
| Elastic APM | Yes | V10.15 Fix 9 | |
| Datadog | No | Planned |
KAFKA-specific configuration for target server
Update the following attributes in the agent configuration, if you need to push End-to-End Monitoring trace data to the Kafka messaging queue and later to process this data in a pre-configured Kafka consumer client.
The following example shows attributes for the Kafka server.
| Property | Description | Sample value |
|---|---|---|
exporter.url |
Use this property to update the endpoint URL of the external target Kafka server. | ${SW_AGENT_OTEL_ENDPOINT:<KAFKA_ENDPOINT>}. For Example,
https://<host_name>:9091 |
exporter.headers |
Use this property to provide key value pairs that contain authorization tokens and required headers that are separated by commas. The header key and value are separated by '#'. | ${SW_AGENT_OTEL_HEADERS:<REQUIRED_HEADERS>}. For Example,
key#value |
exporter.username |
Use this property to provide the username of the target server. | ${SW_AGENT_EXT_SYSTEM_USER:<username>} |
exporter.password |
Use this property to provide the password of the target server. | ${SW_AGENT_EXT_SYSTEM_PASSWORD: <password>} |
exporter.topic |
Use this property to provide the topic name defined in Kafka. | ${SW_AGENT_EXTERNAL_KAFKA_TOPIC:topic_demo} |
exporter.ack |
Use this property to provide the acknowledgment level. | ${SW_AGENT_EXTERNAL_KAFKA_ACK:all} Valid values are
0, 1, and all. The default value is
all. |
exporter.retries |
Use this property to define the retries setting that determines the number of times the producer attempts to send a message before marking it as failed. | ${SW_AGENT_EXTERNAL_KAFKA_RETRIES:0} The default value is
0. |
exporter.client_id |
Use this property to provide the label that names a particular producer. | ${SW_AGENT_EXTERNAL_KAFKA_PRODUCER_ID:OTelTraceProducer} The
default value is TraceProducer. |
exporter.linger_ms_config |
Use this property to define the amount of time a Kafka producer waits before sending a batch of messages, in milliseconds | ${SW_AGENT_EXTERNAL_KAFKA_MS_CONFIG:0} The default value is
0. |
exporter.request_timeout_ms_config |
Use this property to provide the maximum amount of time the client waits for the response of a request, in milliseconds. If the response is not received before the timeout, the client resends the request or fails the request if the number of retries is exhausted. | ${SW_AGENT_EXTERNAL_KAFKA_TIMEOUT_MS_CONFIG:60} The default
value is 60. |
exporter.send_buffer_config |
Use this property to provide the size of the TCP send buffer (SO_SNDBUF) to use when sending data. | ${SW_AGENT_EXTERNAL_KAFKA_SEND_BUFFER_CONFIG:-1} The default
value is -1. |
exporter.receive_buffer_config |
Use this property to provide the size of the TCP receive buffer (SO_RCVBUF) to use when reading data. | ${SW_AGENT_EXTERNAL_KAFKA_RECEIVE_BUFFER_CONFIG:-1} The
default value is -1. |
exporter.compression_type_config |
Use this property to provide the compression type for all data generated by
the producer. Compression consists of full batches of data, so the efficacy of batching also impacts
the compression ratio. More batching means better compression. Valid values are:
nonegzip
snappylz4
zstd |
${SW_AGENT_EXTERNAL_KAFKA_COMPRESSION_TYPE:none} The default
value is none. |
exporter.max_request_size_config |
Use this property to define the maximum size of a request in bytes. This setting limits the number of record batches that the producer sends in a single request to avoid sending large requests. | ${SW_AGENT_EXTERNAL_KAFKA_REQUEST_SIZE:1048576} The default
value is 1048576 (1 MB). |
<INSTALL-DIR>\profiles\IS_default\configuration\custom_wrapper.conf.For example:
- Integration Server and API Gateway:
wrapper.java.additional.504=-Xbootclasspath/a:..\..\..\E2EMonitoring\agent\custom_jars\kafka-clients-3.5.1.jar;"%JAVA_BOOT_CLASSPATH%" - Micro Services Runtime:
at the end of the fileset JAVA_UHMKAFKA_OPTS=-Xbootclasspath/a:"..\..\..\E2EMonitoring\agent\kafka-clients-3.5.1.jar" set JAVA_CUSTOM_OPTS=%JAVA_CUSTOM_OPTS% %JAVA_UHMKAFKA_OPTS%<INSTALL-DIR>\IntegrationServer\bin\setenv.bat
Custom implementation
You can implement solutions to share End-to-End Monitoring tracing data to your custom targets like APM tools or custom data stores like Elasticsearch using a Java™-based API provided by End-to-End Monitoring. The reference implementation is available for the following target systems:
- APM
- Kafka
For more information on the default implementation, see APM-specific configuration for target server or KAFKA-specific configuration for target server.
However, if you need to implement your own solution by using the End-to-End Monitoring common API, use the following Java docs and sample classes that implement the API.
Prerequisites
The otlpClientPlugin.jar file contains the interfaces and helper classes to
implement trace exporter for the plugged-in external target servers.
otlpClientPlugin.jar file in the following
directory.<INSTALL-DIR>\IntegrationServer\instances\default\packages\WmE2EMIntegrationAgent\resources\agent\plugins- Plug-in file path for Microservices
Runtime:
INSTALL_DIR>\IntegrationServer\instances\default\packages\WmE2EMIntegrationAgent\resources\agent\plugins - Plug-in file path for API
Gateway:
<INSTALL_DIR>\IntegrationServer\instances\default\packages\WmE2EMAPIAgent\resources\agent\plugins
Custom implementation configurable properties
| Property | Description | Sample value |
|---|---|---|
exporter.default_target |
Use this property to set the external target system. Valid values are
apm and kafka. You can also use a custom target. |
exporter.default_target=apm
|
exporter.client_connector_class |
Use this property to enable the trace export process to refer to specific classes during the processing. Update the full name of the specific class where you have implemented the logic to handle connectivity. | Example:
${SW_AGENT_EXTERNAL_CLIENT_CONNECTOR_CLASS:com.softwareag.uhm.agent.exporter.impl.APMTraceExportConnectorImpl} |
exporter.client_implementation_class |
Use this property to enable the trace export process to refer to specific classes during processing. Update the full name of the specific class where you have implemented the logic to process the traces to the external target server. | Example:
${SW_AGENT_EXTERNAL_CLIENT_IMPLEMENTATION_CLASS:com.softwareag.uhm.agent.exporter.impl.APMTraceExportClientServiceImpl} |
exporter.url |
Use this property to update the endpoint URL of the external target Kafka server. | ${SW_AGENT_OTEL_ENDPOINT:localhost:9092} |
exporter.headers |
Use this property to provide key value pairs containing authorization tokens and required headers that are separated by commas. The header key and value are separated by '#'. | Example: ${SW_AGENT_OTEL_HEADERS:<REQUIRED_HEADERS>}
key#value |
exporter.username |
Use this property to provide the username of the target server. | ${SW_AGENT_EXT_SYSTEM_USER:<username>} |
exporter.password |
Use this property to provide the password of the target server. | ${SW_AGENT_EXT_SYSTEM_PASSWORD: <password>} |
Custom implementation configuration
- Connect all the implemented classes for connectivity and trace exporter to the corresponding
properties in the
agent.configfile. Provide the full name of the connector and client implementation details in the propertiesexporter.client_connector_classandexporter.client_implementation_class. For example:#APM exporter #com.softwareag.uhm.agent.exporter.impl.APMTraceExportConnectorImpl #com.softwareag.uhm.agent.exporter.impl.APMTraceExportClientServiceImpl - Add a reference entry of the external client library with full path at the end of the
custom_wrapper.conffile at location<INSTALL-DIR>\profiles\IS_default\configuration. For example:- Integration Server and API Gateway:
wrapper.java.additional.504=-Xbootclasspath/a:..\..\..\IntegrationServer\instances\default\packages\WmE2EMIntegrationAgent\resources\agent\externalClient.jar;"%JAVA_BOOT_CLASSPATH%" - Microservices Runtime:
set JAVA_UHM_CLI_OPTS=-Xbootclasspath/a:"packages/WmE2EMIntegrationAgent/resources/agent/externalClient.jar" set JAVA_CUSTOM_OPTS=%JAVA_CUSTOM_OPTS% %JAVA_UHM_OPTS% %JAVA_UHM_CLI_OPTS%
- Integration Server and API Gateway: