Ingesting Logs via OpenTelemetry

Use any OTel SDK or Collector to ship logs over OTLP/HTTP.

BunnyLogs exposes an OTLP/HTTP log endpoint compatible with any OpenTelemetry SDK or Collector. Point your exporter at the URL below — no API key is needed, the logspace UUID in the path authenticates the request.

Endpoint
POST https://bunnylogs.com/otlp/<uuid>/v1/logs
Content-Type: application/json
Field mapping
OTel fieldBunnyLogs fieldNotes
body.stringValue message The log message text.
resource.attributes["service.name"] program Falls back to instrumentation scope name, then otlp.
severityText / severityNumber level severityText is used when present; otherwise mapped from the numeric value.
timeUnixNano timestamp Falls back to observedTimeUnixNano, then server time.
Example — Python SDK
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
import logging
from opentelemetry._logs import set_logger_provider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.sdk.resources import Resource

provider = LoggerProvider(
    resource=Resource({"service.name": "my-app"})
)
provider.add_log_record_processor(
    BatchLogRecordProcessor(
        OTLPLogExporter(
            endpoint="https://bunnylogs.com/otlp/<uuid>/v1/logs"
        )
    )
)
set_logger_provider(provider)

# Attach to the standard logging module
handler = LoggingHandler(level=logging.DEBUG, logger_provider=provider)
logging.getLogger().addHandler(handler)

# Now use logging as normal — logs are forwarded to BunnyLogs
logging.warning("something went wrong")
Example — OpenTelemetry Collector

If you already run an OTel Collector, add BunnyLogs as an otlphttp exporter in your pipeline:

exporters:
  otlphttp/bunnylogs:
    endpoint: "https://bunnylogs.com/otlp/<uuid>"

service:
  pipelines:
    logs:
      exporters: [otlphttp/bunnylogs]
Example — Node.js SDK
npm install @opentelemetry/sdk-node @opentelemetry/exporter-logs-otlp-http
const { OTLPLogExporter } = require("@opentelemetry/exporter-logs-otlp-http");
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
const { Resource } = require("@opentelemetry/resources");

const provider = new LoggerProvider({
  resource: new Resource({ "service.name": "my-app" }),
});
provider.addLogRecordProcessor(
  new BatchLogRecordProcessor(
    new OTLPLogExporter({
      url: "https://bunnylogs.com/otlp/<uuid>/v1/logs",
    })
  )
);

const logger = provider.getLogger("my-app");
logger.emit({ severityText: "INFO", body: "server started" });
Notes
  • Only JSON-encoded OTLP is supported (not binary Protobuf).
  • Multiple log records per request are all processed; partial failures are not reported.
  • The UUID is the same identifier used in your live log stream URL.