Custom Telemetry Ingestion
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.
const resource = new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: "YOUR_SERVICE-NAME", ["mw_agent"]: true, ["mw.account_key"]: "<MW_API_KEY>", ["mw_target"]: "YOUR-TARGET" });
Resource Attributes
Field | Type | Required | Description |
---|---|---|---|
mw.account_key | string | ✅ | API key that authenticates your MW Account |
mw_agent | boolean | ✅ | Required by MW |
SERVICE_NAME | string | ✅ | Logical 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", });
// Send HTTP POST requests to endpoints: POST https://<UID>.middleware.io/v1/logs POST https://<UID>.middleware.io/v1/traces POST https://<UID>.middleware.io/v1/metrics
Need assistance or want to learn more about Middleware? Contact our support team in Slack.