More advanced users have the option to use OpenTelemetry Protocol Exporters instead of Middleware’s Agent and associated SDKs to ingest data. Each language will have a different approach which can be an adaptation from our relevant Host Agent.

The example below uses JavaScript and an abstraction from our Node Agent. All other agents can be found in our middleware-labs repo. If you need assistance with a specific language we are happy to work with you, however, we do not have every approach documented at this time.

Instrument your OpenTelemetry code with languages that are supported by both Middleware and OpenTelemetry.

Installation

Step 1: Setup Resource Attributes

Embed OpenTelemetry Resource Attributes:

Learn more about OpenTelemetry Resources here.

JavaScript
const resource = new Resource({
  [SemanticResourceAttributes.SERVICE_NAME]: "YOUR_SERVICE-NAME",
  ["mw_agent"]: true,
  ["mw.account_key"]: "YOUR-API-KEY",
  ["mw_target"]: "YOUR-TARGET"
});

Resource Attributes

FieldTypeRequiredDescription
mw.account_keystringAPI key that authenticates your MW Account
mw_agentbooleanRequired by MW
SERVICE_NAMEstringLogical name of service requred by OpenTelemetry
For more information on OpenTelemetry JavaScript Resources, head here

Step 2: Configure your Exporter

Configure your exporter(s) to send data to Middleware with OTLP/HTTP or OTLP/gRPC.

Log ingestion is an experimental feature within Open Telemetry. Proceed with caution.
// Install gRPC exporter libraries
const { OTLPLogExporter } = require("@opentelemetry/exporter-logs-otlp-grpc");
const { OTLPTraceExporter } = require("@opentelemetry/exporter-trace-otlp-grpc");
const { OTLPMetricExporter } = require("@opentelemetry/exporter-metrics-otlp-grpc");

// Place the following in your global SDK
// Set exporter to use Middleware gRPC logger endpoint
const loggerExporter = new OTLPLogExporter({
  url: "https://sandbox.middleware.io:443",
});

// Set exporter to use Middleware gRPC metric endpoint
const metricExporter = new OTLPMetricExporter({
    url: "https://sandbox.middleware.io:443",
});

// Set exporter to use Middleware gRPC trace endpoint
const traceExporter = new OTLPTraceExporter({
    url: "https://sandbox.middleware.io:443",
});

Need assistance or want to learn more about Middleware? Contact us at support[at]middleware.io.