Skip to content
System types · Built-in All levels

OpenTelemetry Collector

The built-in OpenTelemetry Collector system type — self-monitoring the pipe that carries all your telemetry, with starter checks for export failures, queue backlog, dropped and refused data, and memory.

SLSluicio team 5 min read Updated Jul 2026

The OpenTelemetry Collector is the pipe everything else flows through — receiving OTLP from your apps, scraping your infrastructure, exporting it all to Sluicio. That makes it the one component whose failure hides every other failure: a struggling Collector doesn’t look like an outage, it looks like suspiciously good news. This is a service type (it describes a workload you run, not a broker to scrape), and its starter checks watch the failure chain of a telemetry pipeline: data refused on the way in, queued and failing on the way out, dropped in the middle, and the process itself running out of memory.

Key: otel-collector · applied automatically to services emitting otelcol-prefixed metrics.

The Collector reports on itself: its internal telemetry appears as otelcol_* metrics on a local Prometheus endpoint, which you loop back through the Collector’s own pipeline:

otel-collector-config.yaml (self-monitoring, minimal)
receivers:
prometheus/self:
config:
scrape_configs:
- job_name: otel-collector
scrape_interval: 60s
static_configs:
- targets: ["127.0.0.1:8888"]
service:
telemetry:
metrics:
level: normal
readers:
- pull:
exporter:
prometheus:
host: 127.0.0.1
port: 8888

The complete version — the resource processor that names the service, the pipeline wiring, plus the rest of a production Collector setup — is in Monitoring with the OpenTelemetry Collector.

Metrics whose names start with otelcolotelcol_exporter_queue_size, otelcol_exporter_send_failed_spans, otelcol_processor_dropped_spans, otelcol_receiver_refused_spans, otelcol_process_memory_rss, and the rest of the internal telemetry.

CheckConditionSeverityWhy it matters
Exporter queue backlogotelcol_exporter_queue_size > 5,000WarningThe sending queue is filling — the backend is slow or unreachable; when the queue is full, new data is dropped.
High memoryProcess memory > 1 GiBWarningA Collector near its memory limit starts refusing data (memory_limiter) or gets OOM-killed — either way, telemetry stops.
Send failuresotelcol_exporter_send_failed_spans increasing (delta)WarningExports to the backend are failing — auth, network, or the backend rejecting data. Retries mask it until the queue fills.
Dropped spansotelcol_processor_dropped_spans increasing (delta)WarningA processor is discarding data — typically the memory_limiter shedding load. Whatever it dropped never reaches Sluicio.
Enqueue failuresEnqueue-failed count increasing (delta)WarningData arrived but couldn’t even enter the sending queue — the queue is already full. Loss is happening now.
Refused spansotelcol_receiver_refused_spans increasing (delta)WarningThe Collector is pushing back on your apps — back-pressure has reached the sources.
Error-level logsError-level log records from the CollectorWarningThe Collector narrates its own failures well — config errors, scrape failures, exporter errors all land here first.
  • Queue backlog should be read against your configured sending_queue.queue_size (default 1,000 per exporter — if you kept the default, the 5,000 threshold can never fire; either raise the queue for real burst tolerance or lower the check to ~80% of your actual queue size).
  • Memory — match the threshold to the environment: comfortably below the container’s limit and above the memory_limiter’s limit_percentage trip point, so the warning lands before shedding starts.
  • The delta checks are span-flavoured (_spans); the same failure counters exist for metrics and logs (otelcol_exporter_send_failed_metric_points, _log_records). If a Collector carries mostly metrics, clone the checks for those names.
  • Error-level logs requires the Collector’s logs to reach Sluicio at all — on a container platform that usually means a filelog receiver or your log shipper forwarding the Collector’s own output.
  • One instance of this type per Collector deployment: gateways, daemonset agents and per-team Collectors each deserve their own service (distinct service.name), or one noisy agent hides in the aggregate.