Ingester API Reference :: Kloudfuse Docs

Ingester API Reference

The Kloudfuse ingester exposes HTTP endpoints for all major telemetry formats. You can send data directly from any client that supports OTLP, Prometheus remote write, Datadog-compatible agents, FluentBit, Fluentd, or Filebeat — without deploying an additional collector or agent.

Overview

All ingester endpoints are reachable at your cluster’s external hostname:

https://<kloudfuse-hostname>/ingester/<endpoint-path>

The ingester accepts compressed payloads via the Content-Encoding header. Supported compression formats: gzip, deflate, zstd. Prometheus remote write additionally requires snappy.

Authentication

If ingestion authentication is enabled on your cluster, include an API key on every request. The header name depends on the endpoint family:

Endpoint family Header Example
OTLP, FluentBit, Fluentd, Filebeat, GitHub, EventBridge Kf-Api-Key Kf-Api-Key: <token>
Datadog-compatible (metrics, logs, traces) Dd-Api-Key Dd-Api-Key: <token>
Prometheus remote write Authorization Authorization: Bearer <token>
AWS Kinesis Firehose X-Amz-Firehose-Access-Key X-Amz-Firehose-Access-Key: <token>

To generate an API key, see Ingestion Authentication with API Key.

OTLP (OpenTelemetry Protocol)

The ingester implements the full OTLP HTTP specification. Use these endpoints with any OpenTelemetry Collector, SDK, or instrumented application.

Telemetry type Endpoint Accepted Content-Type
Metrics POST /ingester/otlp/metrics application/x-protobuf, application/json
Logs POST /ingester/otlp/v1/logs application/x-protobuf, application/json
Traces POST /ingester/otlp/traces application/x-protobuf, application/json
Kubernetes events POST /ingester/otlp/k8s_events application/x-protobuf, application/json
Kubernetes objects POST /ingester/otlp/k8s_objects application/x-protobuf, application/json

Example: Send a Metric via OTLP/HTTP JSON

curl -X POST https://<kloudfuse-hostname>/ingester/otlp/metrics \
  -H "Content-Type: application/json" \
  -H "Kf-Api-Key: <token>" \
  -d '{\
    "resourceMetrics": [{\
      "resource": {\
        "attributes": [\
          {"key": "host.name", "value": {"stringValue": "prod-server-1"}},\
          {"key": "service.name", "value": {"stringValue": "my-app"}}\
        ]\
      },\
      "scopeMetrics": [{\
        "metrics": [{\
          "name": "app.request.count",\
          "description": "Total HTTP requests",\
          "unit": "1",\
          "sum": {\
            "dataPoints": [{\
              "asInt": "1042",\
              "timeUnixNano": "1700000000000000000",\
              "attributes": [\
                {"key": "http.method", "value": {"stringValue": "GET"}}\
              ]\
            }],\
            "aggregationTemporality": 2,\
            "isMonotonic": true\
          }\
        }]\
      }]\
    }]
  }'

Example: Send a Log Record via OTLP/HTTP JSON

curl -X POST https://<kloudfuse-hostname>/ingester/otlp/v1/logs \
  -H "Content-Type: application/json" \
  -H "Kf-Api-Key: <token>" \
  -d '{\
    "resourceLogs": [{\
      "resource": {\
        "attributes": [\
          {"key": "service.name", "value": {"stringValue": "my-app"}}\
        ]\
      },\
      "scopeLogs": [{\
        "logRecords": [{\
          "timeUnixNano": "1700000000000000000",\
          "severityText": "ERROR",\
          "body": {"stringValue": "Database connection refused"},\
          "attributes": [\
            {"key": "env", "value": {"stringValue": "production"}}\
          ]\
        }]\
      }]\
    }]
  }'

OpenTelemetry Collector Configuration

To export from an OTel Collector to Kloudfuse, configure the otlphttp exporter:

exporters:
  otlphttp:
    metrics_endpoint: https://<kloudfuse-hostname>/ingester/otlp/metrics
    logs_endpoint: https://<kloudfuse-hostname>/ingester/otlp/v1/logs
    traces_endpoint: https://<kloudfuse-hostname>/ingester/otlp/traces
    headers:
      Kf-Api-Key: <token>

Prometheus Remote Write

The ingester implements the Prometheus remote write protocol. Any Prometheus instance or compatible agent (Grafana Agent, VictoriaMetrics agent, etc.) can write directly to Kloudfuse.

Telemetry type Endpoint Notes
Metrics POST /ingester/write Snappy-compressed protobuf. Standard Prometheus remote write.
GCP metrics POST /ingester/gcp_metrics Same format; used for GCP-labelled metric streams.

Payload must be a snappy-compressed Prometheus WriteRequest protobuf. The Content-Encoding: snappy header is required.

Prometheus Configuration

Add a remote_write block to your prometheus.yml:

remote_write:
  - url: https://<kloudfuse-hostname>/ingester/write
    authorization:
      credentials: <token>
    queue_config:
      max_samples_per_send: 10000
      batch_send_deadline: 5s

Grafana Agent / Alloy Configuration

prometheus.remote_write "kloudfuse" {
  endpoint {
    url = "https://<kloudfuse-hostname>/ingester/write"
    bearer_token = "<token>"
  }
}

Datadog-Compatible Endpoints

The ingester accepts data from the Datadog Agent and any Datadog-compatible client. Use Dd-Api-Key for authentication.

Telemetry type Endpoint Accepted Content-Type
Logs (v1) POST /ingester/v1/input application/json
Logs (v2) POST /ingester/api/v2/logs application/json
Metrics (v2) POST /ingester/api/v2/series application/x-protobuf
Traces POST /ingester/api/v0.2/traces application/x-protobuf

Example: Send Logs (Datadog JSON Format)

curl -X POST https://<kloudfuse-hostname>/ingester/api/v2/logs \
  -H "Content-Type: application/json" \
  -H "Dd-Api-Key: <token>" \
  -d '[{\
    "hostname": "web-01",\
    "service": "my-app",\
    "status": "error",\
    "message": "Unhandled exception in request handler",\
    "ddtags": "env:production,version:2.1.0"\
  }]'

FluentBit

Point a FluentBit output at the Kloudfuse ingester using the HTTP output plugin.

Telemetry type Endpoint Accepted Content-Type
Logs POST /ingester/v1/fluent_bit application/json, application/msgpack

FluentBit Output Configuration

[OUTPUT]
    Name              http
    Match             *
    Host              <kloudfuse-hostname>
    Port              443
    TLS               On
    URI               /ingester/v1/fluent_bit
    Format            json
    Header            Kf-Api-Key <token>
    Compress          gzip

Fluentd

Point a Fluentd output at the Kloudfuse ingester using the HTTP output plugin.

Telemetry type Endpoint Accepted Content-Type
Logs POST /ingester/v1/fluentd application/x-ndjson (NDJSON)

Fluentd Output Configuration

<match **>
  @type http
  endpoint https://<kloudfuse-hostname>/ingester/v1/fluentd
  headers {"Kf-Api-Key": "<token>"}
  content_type application/x-ndjson
  <format>
    @type json
  </format>
  <buffer>
    flush_interval 5s
  </buffer>
</match>

Filebeat

Configure Filebeat to ship logs using the Elasticsearch output pointed at the Kloudfuse ingester, which exposes an Elasticsearch-compatible bulk ingestion endpoint.

Telemetry type Endpoint Accepted Content-Type
Logs (bulk) POST /ingester/api/v1/filebeat/_bulk application/x-ndjson

Filebeat Output Configuration

output.elasticsearch:
  hosts: ["https://<kloudfuse-hostname>/ingester/api/v1/filebeat"]
  api_key: "ignored:<token>"   # value after ":" is sent as Kf-Api-Key
  ssl.verification_mode: full

Events

The ingester accepts raw event payloads from webhook sources.

Telemetry type Endpoint Notes
GitHub webhooks POST /ingester/github/events JSON payload. Set as the webhook Payload URL in GitHub settings.
AWS EventBridge POST /ingester/eventbridge JSON payload. Used by the AWS EventBridge integration.

Response Codes

HTTP status Meaning
200 OK Payload accepted and queued for ingestion.
202 Accepted Payload accepted for async processing.
400 Bad Request Malformed payload, unsupported content type, or missing/invalid API key.
429 Too Many Requests Rate limit exceeded. Retry after a short backoff.
503 Service Unavailable Ingester is at maximum concurrent request capacity. Retry with exponential backoff.

Compression Reference

All endpoints support compressed request bodies via the Content-Encoding header:

Value Notes
gzip Recommended for most clients. Widely supported.
deflate zlib deflate format.
zstd Higher compression ratio; use where client support is available.
snappy Required for Prometheus remote write (/write, /gcp_metrics).