Skip to main content
These guides cover the most common senders. The Datasource page generates the same configuration with the real endpoint and token already filled in, and covers more platforms. See Datasource. Replace molesignal.example.com with the address of the deployment, and MS_TOKEN with an intake token. Use http://localhost:5080 for the Docker Compose sandbox.

OpenTelemetry Collector

The Collector otlphttp exporter treats endpoint as a base URL and appends /v1/logs, /v1/metrics, and /v1/traces. Set endpoint to the /api path so the requests reach /api/v1/logs, /api/v1/metrics, and /api/v1/traces.
Keep compression: none. The otlphttp exporter compresses with gzip by default, and OTLP over HTTP rejects compressed request bodies with 400. A request body above 2 MiB is rejected with 413, so keep send_batch_max_size small enough for the record size. Lower it when the exporter logs 413.
To send over gRPC, use the otlp exporter. The port 4317 serves plain gRPC, so set tls.insecure: true unless a proxy terminates TLS:
Add stream-name: <stream> to headers to write to a stream other than default. The header applies to every signal that uses the exporter. Define one exporter per stream when signals need separate streams.

OpenTelemetry SDKs

Every OpenTelemetry SDK reads the standard environment variables. Point OTEL_EXPORTER_OTLP_ENDPOINT at the /api path and send OTLP over HTTP:
SDK exporters do not compress by default. Keep OTEL_EXPORTER_OTLP_COMPRESSION unset or none.

Vector

Send logs to native HTTP JSON intake with the http sink. Events without a _timestamp field receive the time the server accepted them.

Fluent Bit

Use the http output with the JSON format:
Set Port to 5080 and tls to Off for the Docker Compose sandbox.

Kubernetes

Run Fluent Bit as a DaemonSet that tails /var/log/containers. Open Datasource → Kubernetes for the complete manifests with the endpoint and token filled in. The output section of the Fluent Bit configuration is the same http output as above, with Match kube.*.

Prometheus

Add MoleSignal as a remote write target. Keep Prometheus scraping and storing locally while the target is evaluated:
Samples go to the metrics stream named by the stream-name header, default without it; add headers: { stream-name: <source> } to the remote_write entry to keep each Prometheus server in its own stream. Query the data with PromQL by metric name. See the PromQL support matrix for the supported functions.

Scripts and custom senders

Send an array of JSON records with curl or any HTTP client:
Batch records to stay below the 2 MiB request limit, and send _timestamp in microseconds when the original event time matters.

Verify the data

  1. Open Home and check that the stream is Healthy in Priority streams.
  2. Open Streams to confirm the stream name, type, and last received time.
  3. Open Logs, Metrics, or Traces and select the stream.
If nothing arrives, check the sender log for 401 (missing or expired token), 403 (token without streams.write), 400 (compressed OTLP request body), and 413 (request body above 2 MiB). See Troubleshooting.

Moving from another stack

Last modified on October 26, 2026