Skip to main content

Quick Start

Three steps: check your credentials work, get data in, look at it.

Prerequisites​

Find these three values in the xScaler portal:

ValueWhere to find itDescription
RegionShown in write endpoint URLse.g. euw1-01
Tenant IDOrganization → Tenants → click tenantYour X-Scope-OrgID value
API tokenOrganization → Tenants → click tenant → API keysYour Authorization: Bearer token

See Manage API tokens for how to find or create a token.

Both headers are required on every request

Every request to xScaler, reads and writes across all signals, must include:

Authorization: Bearer <token>
X-Scope-OrgID: <tenant-id>

A missing or mismatched X-Scope-OrgID returns 401 Unauthorized with x-scope-orgid mismatch. A missing or invalid Authorization returns 401 Unauthorized too.


Step 1: Verify connectivity​

Send a test query to confirm your credentials work:

# Metrics
curl "https://euw1-01.m.xscalerlabs.com/api/v1/query" \
-H "Authorization: Bearer <token>" \
-H "X-Scope-OrgID: <tenant-id>" \
--data-urlencode 'query=up'

# Logs
curl "https://euw1-01.l.xscalerlabs.com/api/v1/labels" \
-H "Authorization: Bearer <token>" \
-H "X-Scope-OrgID: <tenant-id>"

A 200 response with "status": "success" confirms authentication and connectivity.


Step 2: Send telemetry​

Enroll the OpenTelemetry agent and the portal delivers its pipelines over OpAMP. The rest of these docs assume that route. Everything else writes to the same endpoints.

Starting pointDo this
Nothing yetEnroll the OpenTelemetry agent
My own OpenTelemetry CollectorAdd the xScaler exporter
PrometheusPrometheus remote_write
Grafana AlloyGrafana Alloy
Python / Node.js / GoOTel SDKs
Kubernetes, no code changeseBPF instrumentation

Why the agent​

The agent is a standard OpenTelemetry Collector. You write one opamp extension block on the host, and after that every receiver, processor and exporter arrives from the portal:

otel-collector-config.yaml
# the only file you edit by hand
extensions:
opamp:
server:
ws:
endpoint: wss://agents.xscalerlabs.com/v1/opamp
headers:
Authorization: "Bearer <enrollment-token>"

The enrollment token is bootstrap only. The agent trades it for its own credential on first connect. Then you assign config templates by label, so adding a receiver to fifty hosts is one edit in the portal.

Full walkthrough: Enroll agents.

Per-signal guides​

If you would rather wire one signal at a time: Metrics · Logs · Traces


Step 3: Look at your data​

Open Insights in the portal. Metrics, Logs and Traces each have their own page, and the Explorer runs several queries at once. There is nothing to connect.

PageUse it for
MetricsBreak a metric down by label
LogsFilter a stream, then open the trace a line belongs to
TracesSpan waterfall, critical path, service graph
ExplorerSeveral queries at once, each with its own signal
DashboardsBuild panels, or import Grafana JSON as-is
AlertingRules, contact points, notification policies

Or use your own Grafana​

The Prometheus-, Loki- and Tempo-compatible APIs stay open, so existing dashboards keep reading:

SignalData source typeURL
MetricsPrometheushttps://euw1-01.m.xscalerlabs.com
LogsLokihttps://euw1-01.l.xscalerlabs.com
TracesTempohttps://euw1-01.t.xscalerlabs.com

Add Authorization: Bearer <token> and X-Scope-OrgID: <tenant-id> as custom HTTP headers on each data source.

Full walkthrough: Connect Grafana datasources. To have xScaler run the Grafana for you, see Managed Grafana.


Common errors​

ErrorCauseFix
401 x-scope-orgid mismatchX-Scope-OrgID header missing or wrong tenantAdd -H "X-Scope-OrgID: <tenant-id>" with the tenant that matches your token
401 UnauthorizedToken missing or malformedCheck the format: Bearer <token>, capital B, one space
403 ForbiddenToken scope too narrowGenerate a read and write token from the portal
404 on an OTLP writeA path was appended to the exporter endpointSet endpoint to the base host only. The exporter appends the path

See Troubleshooting for a full symptom guide, or Agent troubleshooting if the agent itself is not reporting in.