OpenTelemetry
New here? Start with the Quickstart to launch Icelake + Grafana locally and send your first telemetry in 5 minutes.
Overview
Section titled “Overview”Icelake speaks OTLP protobuf natively for logs, metrics, and traces. Ship observability data from any OTel-instrumented application or from the OpenTelemetry Collector — no adapters in between.
All OTLP endpoints authenticate via HTTP Basic auth — username is your client ID, password is your API key (ilk_ + 64 hex characters).
Getting started
Section titled “Getting started”1. Configure the OpenTelemetry Collector
Section titled “1. Configure the OpenTelemetry Collector”Point your OTel Collector’s otlphttp exporter at Icelake:
exporters: otlphttp: endpoint: "https://api.icelake.eu" auth: authenticator: basicauth/icelake
extensions: basicauth/icelake: client_auth: username: "your-client-id" password: "ilk_your-api-key-here"
service: extensions: [basicauth/icelake] pipelines: logs: receivers: [otlp] processors: [batch] exporters: [otlphttp] metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp] traces: receivers: [otlp] processors: [batch] exporters: [otlphttp]2. Verify ingestion
Section titled “2. Verify ingestion”Check that data is flowing:
# Health checkcurl https://api.icelake.eu/health
# Query ingested OTel logs via the Loki-compatible APIcurl -u "your-client-id:ilk_your-api-key-here" \ "https://api.icelake.eu/loki/api/v1/query?query={source=\"otel\"}"OTLP endpoints
Section titled “OTLP endpoints”All three endpoints accept OTLP/HTTP protobuf payloads with Basic auth.
POST /v1/logsContent-Type: application/x-protobufAuthorization: Basic <base64("client_id:api_key")>OTel log records are mapped to Icelake’s log storage with:
body→ log messageresource.attributes→ labelstimestamp→ nanosecond precision timestampseverity→ log level label
Metrics
Section titled “Metrics”POST /v1/metricsContent-Type: application/x-protobufAuthorization: Basic <base64("client_id:api_key")>OTel metrics are converted to Prometheus-compatible format:
- Gauge → Prometheus gauge
- Sum (monotonic) → Prometheus counter
- Histogram → Prometheus histogram
- Attributes → Prometheus labels
Traces
Section titled “Traces”POST /v1/tracesContent-Type: application/x-protobufAuthorization: Basic <base64("client_id:api_key")>Application instrumentation
Section titled “Application instrumentation”Direct OTLP export (no Collector)
Section titled “Direct OTLP export (no Collector)”For simple setups, export directly from your application:
import base64from opentelemetry.exporter.otlp.proto.http.log_exporter import OTLPLogExporter
creds = base64.b64encode(b"your-client-id:ilk_your-api-key-here").decode()exporter = OTLPLogExporter( endpoint="https://api.icelake.eu/v1/logs", headers={"Authorization": f"Basic {creds}"},)const { OTLPLogExporter } = require('@opentelemetry/exporter-logs-otlp-http');
const creds = Buffer.from('your-client-id:ilk_your-api-key-here').toString('base64');const exporter = new OTLPLogExporter({ url: 'https://api.icelake.eu/v1/logs', headers: { Authorization: `Basic ${creds}`, },});Storage layout
Section titled “Storage layout”OTel data is stored alongside Prometheus and Loki data in Parquet format on S3:
s3://icelake-data/├── metrics/ # Prometheus + OTel metrics├── logs/ # Loki + OTel logs└── traces/ # OTel traces └── tenant=default/ └── 2026/02/20/ ├── traces_001.parquet └── compacted_001.parquetAPI reference
Section titled “API reference”| Endpoint | Method | Content-Type | Description |
|---|---|---|---|
/v1/logs | POST | application/x-protobuf | OTLP log ingestion |
/v1/metrics | POST | application/x-protobuf | OTLP metric ingestion |
/v1/traces | POST | application/x-protobuf | OTLP trace ingestion |
Best practices
Section titled “Best practices”Pro tip: use the OpenTelemetry Collector as a gateway to batch, filter, and route data before sending to Icelake.
- Use the
batchprocessor in your OTel Collector for efficient ingestion - Map resource attributes to meaningful labels for queryability
- Set up separate pipelines for logs, metrics, and traces
- Monitor collector health alongside Icelake ingestion rates
Related docs
Section titled “Related docs”- Quickstart — end-to-end Icelake + Grafana setup in 5 minutes
- Prometheus — remote write path for metrics-only pipelines
- Loki & LogQL — log-shipping alternative if you’re not on OTEL