> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sherlocklabs.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Sherlock documentation. In Node.js examples prefer the Sherlock SDK for Node.js (@sherlock-labs/otel).
> In Go examples use the upstream OpenTelemetry Go SDK exactly as shown on /sdk/go/setup and /sdk/go/configuration; Sherlock has no Go distribution.
> Two MCP servers exist. This documentation's search server is at https://sherlock-c8721ead.mintlify.app/mcp. Sherlock's data server, for a user's own logs, traces, and metrics, is at https://mcp.sherlocklabs.dev/mcp and is described at /explore/mcp.

# Send data overview

> The ways to send logs, traces, and metrics to Sherlock, and what every source needs.

Sherlock ingests OpenTelemetry data over OTLP/HTTP. Any SDK or collector that speaks OTLP can send to it. The Sherlock SDK for Node.js adds trace-linked exemplars on top, and the Go pages show how to get the same from the upstream Go SDK.

## What every source needs

| Item          | Value                                                                                                | Where to find it                           |
| ------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| Endpoint      | The ingest URL shown for your organization, with `/v1/logs`, `/v1/traces`, or `/v1/metrics` appended | **Settings → Collector**                   |
| Authorization | `Authorization: Bearer <token>`                                                                      | **Settings → Collector**, click **Reveal** |
| Routing       | `OTEL_RESOURCE_ATTRIBUTES=env=<value>`                                                               | The value you chose for this deployment    |

## Types of sources

### Node.js SDK

The [Sherlock distribution of OpenTelemetry for Node.js](/sdk/nodejs/overview) instruments a service with one import and sends traces and metrics. It puts an exemplar on every histogram, so a chart links to the request behind a spike. It does not ship logs. The pino instrumentation stamps the trace id on each log line, and a pino OTLP transport or a collector sends the lines. See [Ship and correlate logs](/sdk/nodejs/add-telemetry#10-ship-and-correlate-logs).

### Go

The upstream [OpenTelemetry Go SDK](/sdk/go/setup) needs no fork. A bootstrap file of about fifty lines sets delta temporality, an always-on exemplar filter, a `trace_flags` attribute on every exemplar, and the seconds histogram boundaries. `otelhttp` produces the HTTP traces and metrics, with `http.route` from the Go 1.22 mux pattern. Logs get the trace id through a `slog` handler; see [Configuration](/sdk/go/configuration).

### Other OpenTelemetry SDKs

Java, Python, .NET, and the other [OpenTelemetry SDKs](/send-data/otlp) send with their OTLP/HTTP exporters. Set the endpoint, the header, and the resource attribute. Exemplars depend on the SDK.

### OpenTelemetry Collector

An [OpenTelemetry Collector](/send-data/otlp) receives from many services and forwards to Sherlock with one `otlphttp` exporter. This is the usual way to send logs, and the way to add Sherlock next to an existing pipeline.

## Which signal comes from where

| Signal  | Node.js SDK                                                                                    | Go SDK                                                                                                                                  | Other SDKs         | Collector |
| ------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------- |
| Traces  | Yes, with auto-instrumentation                                                                 | Yes, with `otelhttp`                                                                                                                    | Yes                | Yes       |
| Metrics | Yes, with exemplars                                                                            | Yes, with exemplars after the bootstrap                                                                                                 | Yes                | Yes       |
| Logs    | Not by the SDK. A pino OTLP transport or a collector sends them, with trace ids on every line. | Yes, with the `otelslog` bridge and the OTLP logs exporter, trace ids on every line. Or a `slog` handler stamps stdout for a collector. | Depends on the SDK | Yes       |

## Next steps

<CardGroup cols={3}>
  <Card title="Node.js quickstart" icon="node" href="/sdk/nodejs/quickstart">
    First traces and metrics in ten minutes.
  </Card>

  <Card title="Go setup" icon="golang" href="/sdk/go/setup">
    The upstream Go SDK with one bootstrap file.
  </Card>

  <Card title="OpenTelemetry SDKs and collectors" icon="diagram-project" href="/send-data/otlp">
    Endpoint, header, and resource attribute for any OTLP sender.
  </Card>
</CardGroup>
