Skip to main content

Wire Formats & Receivers

Most teams adopting InfraSage already have telemetry flowing somewhere. The fastest onboarding is usually not "re-instrument everything." It's pointing what you already run at an endpoint here.

OpenTelemetry (OTLP/HTTP)

The primary path. Point any OpenTelemetry SDK or Collector at:

POST https://api.infrasage.dev/v1/traces
POST https://api.infrasage.dev/v1/metrics
POST https://api.infrasage.dev/v1/logs

Encodings accepted (the stock Collector defaults work as-is):

AspectAccepted
Content-Typeapplication/x-protobuf (SDK/Collector default) or application/json
Content-Encodinggzip (Collector default), deflate, or none

A minimal Collector exporter needs no special encoding settings:

exporters:
otlphttp:
endpoint: https://api.infrasage.dev
headers:
X-API-Key: "${INFRASAGE_API_KEY}"

:::note OTLP/gRPC The gRPC transport (:4317) is not yet accepted. Collectors and SDKs configured for gRPC should use the otlphttp exporter instead. Same data, same fidelity. :::

What happens to your metrics on arrival

Two conversions are applied at the boundary, and both matter for correctness (see metric fidelity): cumulative counters become per-interval deltas (with counter-reset detection), and histogram buckets become p50/p95/p99 series alongside count and average.

Already running Prometheus?

Add a remote_write block, with no collector in between:

remote_write:
- url: https://api.infrasage.dev/api/v1/receiver/prometheus
headers:
X-API-Key: "<your key>"

Your exporters (node_exporter, kube-state-metrics, and everything else already scraped) start flowing without re-instrumentation.

Other receivers

SourceEndpoint / mechanism
Splunk HECPOST /api/v1/receiver/splunk (set SPLUNK_HEC_TOKEN)
Elasticsearch bulkPOST /api/v1/receiver/elasticsearch/_bulk
Datadog agentDatadog receiver
KafkaConsumer on your topic
AWS Kinesis FirehoseFirehose receiver
AWS CloudWatchMetric + log polling
Azure / GCPCloud monitor polling
Kubernetes eventsCluster event receiver
SNMPInterface counters and error rates from network gear
IPMIBMC sensors: temperature, fans, power draw
CI systemsDeploy and build events
AlertmanagerWebhook (keeps your existing rules working during migration)

Infrastructure metrics

If your Collector isn't already collecting host metrics, enable the hostmetrics receiver. It is what feeds the saturation detector:

receivers:
hostmetrics:
collection_interval: 30s
scrapers:
cpu:
metrics:
system.cpu.utilization: { enabled: true }
memory:
metrics:
system.memory.utilization: { enabled: true }
filesystem:
metrics:
system.filesystem.utilization: { enabled: true }

:::tip Per-instance identity InfraSage derives instance identity from k8s.pod.name, k8s.pod.uid, faas.instance, container.id, host.name, or host.id, in that order. It does not read service.instance.id. If your host metrics arrive without an instance, add one of the supported attributes via a resource processor; without it, a full disk on one node averages away across the fleet. :::