What every source needs
Types of sources
Node.js SDK
The Sherlock distribution of OpenTelemetry for Node.js 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.Go
The upstream OpenTelemetry Go SDK needs no fork. A bootstrap file of about fifty lines sets delta temporality, an always-on exemplar filter, atrace_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.
Other OpenTelemetry SDKs
Java, Python, .NET, and the other OpenTelemetry SDKs 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 receives from many services and forwards to Sherlock with oneotlphttp 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
Next steps
Node.js quickstart
First traces and metrics in ten minutes.
Go setup
The upstream Go SDK with one bootstrap file.
OpenTelemetry SDKs and collectors
Endpoint, header, and resource attribute for any OTLP sender.

