AWS Distro for OpenTelemetry is a secure, production-ready open source distribution that gives AWS users a streamlined path to instrument their applications with OpenTelemetry. Previously, we partnered with AWS to package our proprietary exporter. We now support OTLP ingest natively, so you can easily send data collected by the AWS Distro for OpenTelemetry to New Relic using the OTLP exporter.

AWS Distro for OpenTelemetry includes the AWS OpenTelemetry SDKs, the Java auto instrumentation agent, and the OpenTelemetry collector, which includes our exporters.

The OpenTelemetry Collector provides a vendor-agnostic implementation for receiving, processing, and exporting telemetry data; it’s the default location for instrumentation libraries to export telemetry data. It removes the need to run, operate, and maintain multiple collectors. Instead, it gives you the tools you need to send open source observability data to any backend, regardless of format.

You can run the AWS OpenTelemetry Collector in your environment as a sidecar or daemonset for EKS, a sidecar for ECS, or an agent on EC2. In this post, we’ll show you how to send data collected by AWS Distro for OpenTelemetry to New Relic, where you can analyze your data with our curated experience for OpenTelemetry.

Using the New Relic exporters in AWS Distro for OpenTelemetry

In this example, we'll walk through how to instrument a sample Java application using AWS Distro for OpenTelemetry and send data to New Relic by configuring the exporters. To follow along, use your own application or use the Spring Pet Clinic to experiment.

Step 1. Download the OpenTelemetry instrumentation agent and collector

Step 2. Configure New Relic as the backend in the OpenTelemetry Collector

To configure New Relic as the backend, modify the collector-config.yaml file as shown.

Note: You’ll need your New Relic Insights Insert API key.

---

receivers:

   otlp:

      protocols:

         grpc:

exporters:

   otlp:

      api-key: {YOUR-SECRET-API-KEY}

service:

   pipelines:

      traces:

         receivers: [otlp]

         exporters: [otlp]

After configuring the OpenTelemetry Collector, run it using one of the available options.

Step 3. Start your application and analyze OpenTelemetry data on New Relic.

Set the OTEL_RESOURCE_ATTRIBUTES environment variable to include the service name and the OTEL_EXPORTER environment variable to otlp:

OTEL_RESOURCE_ATTRIBUTES=service.name=*AppName* OTEL_EXPORTER=otlp

The agent forwards the data to the collector. The collector is configured to use the OTLP receiver and the OTLP exporter to send the trace data to New Relic.

Start running your application with the OpenTelemetry Java agent by passing the -javaagent flag to the JVM:

java -javaagent:aws-opentelemetry-agent.jar -jar target/*.jar

Once the application is running, you can use our curated OpenTelemetry UI to start analyzing the data. The following example shows a snapshot of the top 20 time-consuming transactions for the Spring Pet Clinic application:

screenshot showing time-consuming transactions

You can also filter and group this data by AWS metadata that AWS Distro for OpenTelemetry collects, thereby quickly identifying any transactions that could be the issue’s source.

Similarly, the attributes section for each span in the distributed tracing UI shows you the AWS metadata and provides the context for understanding and troubleshooting issues quickly.

 troubleshooting screenshot

AWS Distro for OpenTelemetry lets you instrument your applications once and send metrics, traces, and metadata from AWS resources and managed services to New Relic One. With New Relic One, you can visualize, analyze, and correlate the application performance data with underlying infrastructure data, reducing the mean time to problem resolution. To learn more about the AWS Distro for OpenTelemetry, visit our developer portal.

Sign up for New Relic’s free tier and start ingesting your OpenTelemetry data today.