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):
| Aspect | Accepted |
|---|---|
Content-Type | application/x-protobuf (SDK/Collector default) or application/json |
Content-Encoding | gzip (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
| Source | Endpoint / mechanism |
|---|---|
| Splunk HEC | POST /api/v1/receiver/splunk (set SPLUNK_HEC_TOKEN) |
| Elasticsearch bulk | POST /api/v1/receiver/elasticsearch/_bulk |
| Datadog agent | Datadog receiver |
| Kafka | Consumer on your topic |
| AWS Kinesis Firehose | Firehose receiver |
| AWS CloudWatch | Metric + log polling |
| Azure / GCP | Cloud monitor polling |
| Kubernetes events | Cluster event receiver |
| SNMP | Interface counters and error rates from network gear |
| IPMI | BMC sensors: temperature, fans, power draw |
| CI systems | Deploy and build events |
| Alertmanager | Webhook (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.
:::