Add Lumenstat to your Collector
1
Issue an ingest key
Issue a key on your project’s Setup page, as described in Issue an ingest key. Give it to the Collector process as
LUMENSTAT_INGEST_KEY.2
Add the exporter
Add an
otlphttp exporter with the ingest key header:3
Add it to the traces pipeline
List it next to your existing exporter in the
traces pipeline. Do not add it to your metrics or logs pipelines: Lumenstat drops logs and keeps only three HTTP latency metric series.4
Restart and confirm
Restart the Collector, send a few requests to a service behind it, then check Is data arriving? on Setup. See Confirm data is arriving.
otel-collector.yaml
otelcol-contrib validate on Collector 0.164.0, the version Lumenstat runs.
endpointis the base URL. Theotlphttpexporter appends/v1/tracesitself. Writingendpoint: https://otlp.lumenstat.com/v1/tracessends to/v1/traces/v1/traces, which returns 404. To give the full URL, usetraces_endpoint: https://otlp.lumenstat.com/v1/tracesinstead.- Use
otlphttp, nototlp. Theotlpexporter speaks gRPC, and Lumenstat has no public gRPC endpoint. - Defaults are fine.
otlphttpsends protobuf with gzip by default. Lumenstat accepts both. - Processors in a shared pipeline apply to Lumenstat too. A sampler such as
probabilistic_samplerortail_samplinglowers Lumenstat’s request counts by the same ratio. A processor that deleteshttp.routeorurl.pathmakes routes worse. If your pipeline has either, use a separate pipeline as below.
Send only what Lumenstat reads
A second traces pipeline on the same receiver gets its own copy of every span. Give Lumenstat a pipeline without your sampler, and trim each span to the attributes Lumenstat reads before it leaves your network.otel-collector.yaml
otelcol-contrib validate on 0.164.0.
filterandtransformship in the contrib distribution (otelcol-contrib), not in the core Collector.- The attribute list is the one Lumenstat’s collector uses as spanmetrics dimensions. Span kind and status are span fields, not attributes, so
keep_keysleaves them alone. - If every service sets
http.route, removeurl.pathandhttp.targetfrom the list so raw paths never leave your network. A server span with neither a route nor a path is then counted under{unknown}. - Span events, which carry exception messages and stack traces, are not trimmed by this configuration. Lumenstat does not read or store them.
Use SDK environment variables
For a service with no APM and no Collector, configure the SDK’s OTLP trace exporter with the standard variables:OTEL_EXPORTER_OTLP_TRACES_ENDPOINTis used as written, so it includes/v1/traces. The generalOTEL_EXPORTER_OTLP_ENDPOINTis different: the SDK appends the signal path to it.OTEL_EXPORTER_OTLP_TRACES_HEADERStakes comma-separatedkey=valuepairs. Ingest keys use only URL-safe characters, so the key needs no escaping.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobufmatters because Lumenstat accepts only OTLP over HTTP, and some SDKs default to gRPC.OTEL_METRICS_EXPORTER=noneandOTEL_LOGS_EXPORTER=nonestop the SDK from exporting its own metrics and logs to its default endpoint without a key. Lumenstat builds request metrics from spans.
- Java
- Python
- Go
- Rust
The OpenTelemetry Java agent reads every variable above.The agent’s framework instrumentations, such as Spring Web MVC, set
http.route on server spans.Confirm data is arriving
Open Setup in the dashboard and reload it. The API line under Is data arriving? readsN requests in the last 24 hours once data is stored. connected, waiting for traffic means the key exists but nothing has been stored yet. The collector flushes aggregates every 15 seconds, so allow up to a minute after the first request, plus your own Collector’s batch delay.
otlp.lumenstat.com returns 404
otlp.lumenstat.com returns 404
Only
/v1/traces, /v1/metrics and /v1/logs are routed to the collector. Every other path gets a 404 at the edge. The usual cause is /v1/traces written into endpoint, which the otlphttp exporter extends to /v1/traces/v1/traces.Connection errors or timeouts on port 4317
Connection errors or timeouts on port 4317
The exporter is using gRPC. Lumenstat exposes OTLP over HTTP on port 443 only. Use
otlphttp in a Collector, or set OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf in an SDK.Setup still says connected, waiting for traffic
Setup still says connected, waiting for traffic
- Check the header name,
x-scf-ingest-key, and that the variable holding the key is set in the Collector’s or service’s environment. A missing or wrong key fails silently: the collector answers with success and the writer drops the data. - Check that the spans are server spans. Client and internal spans are not counted.
- Check for samplers in the pipeline that feeds Lumenstat.
Routes show raw paths or {unknown}
Routes show raw paths or {unknown}
The server spans have no
http.route. Add your framework’s instrumentation, or let Lumenstat normalize the raw path. {unknown} means the span had no route or path attribute at all, for example because a transform processor removed them.