Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mezmo-9a59581a-mintlify-926f893d.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Description

You can send your traces to a Mezmo Pipeline via any OTLP compliant sender.
Mezmo currently requires that you use the HTTP transport for your payload, not the standard gRPC transport mechanism, to send in data via OTLP.

Configuration

The OTLP Traces source provides a unique endpoint URL that uses Bearer Token authentication. You can obtain the unique endpoint and Bearer Token from the Mezmo pipeline app when you create a new OTLP Traces source.

Configuration Options

OptionDescription
url / endpointunique URL for your OTLP source
tokentoken used for authorization for your OTLP source

OpenTelemetry Collector Configuration

To configure an OTel collector to export to Mezmo, you can add the following to your exporters section of your OTel Collector config file:
exporters:
  otlphttp/mezmo-traces:
    endpoint: "https://pipeline.mezmo.com/v1/<YOUR ROUTE ID>"
    headers:
      Authorization: "<YOUR_PIPELINE_INGEST_KEY>"

The endpoint in the exporters configuration must exactly match the URL provided by the OpenTelemetry Traces. You don’t need to specify the /v1/traces path, which will otherwise by ignored by the Source.

Data Structure

Once trace data ingested into a Mezmo pipeline each span will be converted into a Mezmo event and the data structure will differ from the Otel structure. Look at the example below to know what to expect and how to navigate your data.
{
  "message": { // Moved from resource_spans.[].scope_spans.[].spans.[]
    "name": "string",
    "hostname": "string", // optional, scrapped from spans.[].attributes "host.name"
    "trace_id": "HEX string", // spans.[].trace_id converted from [u8; 16] to HEX string
    "trace_state": "string",
    "span_id": "HEX string", // spans.[].span_id converted from [u8; 8] to HEX string,
    "parent_span_id": "HEX string", // spans.[].span_id converted from [u8; 8] to HEX string,
    "start_timestamp": "unix timestamp", // spans.[].start_time_unix_nano
    "end_timestamp": "unix timestamp", // spans.[].end_time_unix_nano
    "kind": "number",
    "events": [
      {
      	"name": "string",
        "timestamp": "unix timestamp", // events.[].time_unix_nano
        "attributes": {
        	"key": "value"
        },
        "dropped_attributes_count": "number",
      }
    ],
    "dropped_events_count": "number",
    "links": [
      {
      	"trace_id": "HEX string", // links.[].trace_id converted from [u8; 16] to HEX string,
        "span_id": "HEX string", // links.[].span_id converted from [u8; 8] to HEX string,
        "trace_state": "string",
        "attributes": {
        	"key": "value"
        },
        "dropped_attributes_count": "number",
      }
    ],
    "dropped_links_count": "number"
  },
  "metadata": {
    "level": "string", // It always equals "trace"
    "span_uniq_id": "HEX string", // It is a unique id which groups traces event by a span within one otel source request
    "resource": { // Moved from resource_spans.[].resource
    	"attributes": {
    	"key": "value"
    	},
    	"dropped_attributes_count": "number",
    	"schema_url": "string"
    }
    "scope": { // Moved from resource_spans.[].scope_spans.[].scope
    	"name": "string",
			"version": "string",
			"attributes": {
    		"key": "value"
    	},
			"schema_url": "string"
  	}
    "attributes": { // Moved from resource_spans.[].scope_spans.[].spans.[].attributes
    	"key": "value"
    },
		"headers": { // Moved from an otel request headers
    	"key": "value"
    }
  }
}

In order to send Otel traces data into the Otel Destination the structure must remain unchanged, otherwise the Otel Destination will either not recognize the event as a trace or failed to handle an event.> > Arbitrary fields are allowed.