Choose a delivery path
OpenTelemetry Collector
Recommended. Keep the acknowledgment path close to Keyring, then let the collector handle vendor
authentication, queuing, retries, and routing.
Direct OTLP endpoint
Fewer components, but vendor latency and availability become part of the protected request path.
What Keyring expects
OTEL_COLLECTOR_URL is a base URL. Keyring sends OTLP/HTTP Protobuf to:
<base>/v1/logsfor logs and acknowledged audit events;<base>/v1/tracesfor traces; and<base>/v1/metricsfor metrics.
Recommended: OpenTelemetry Collector
Run the collector beside Keyring whenever your platform supports a sidecar or nearby service. For ECS, Cloud Run multi-container services, and Kubernetes pods, both containers can communicate over127.0.0.1 without exposing the collector receiver publicly.
Configure Keyring with the local collector base URL:
Keyring environment
otel-collector.yaml
/var/lib/otelcol on storage that matches your recovery requirements. Keep provider credentials
on the collector, not in the Keyring container. This configuration uses file_storage from the
Collector Contrib distribution. Pin a reviewed
OpenTelemetry Collector distribution and version
instead of tracking a floating image tag.
The logs pipeline intentionally sends directly to the exporter’s persistent queue. Do not add an
in-memory batch processor in front of that queue without reviewing how it changes acknowledgment and
recovery behavior.
The receiver address above is for a sidecar that shares Keyring’s network namespace. A standalone
collector should use a private listener protected by network policy and TLS.
Direct vendor endpoint
Use a direct endpoint only when it accepts OTLP/HTTP Protobuf on all three standard paths. The logs endpoint must return a final 2xx response quickly enough to sit on the protected request path. Keyring treats that 2xx response as the acknowledgment. Confirm the provider’s intake and retention semantics meet your audit requirements. StoreOTEL_COLLECTOR_HEADERS as a secret. It uses comma-separated Name=value pairs, with spaces and
other reserved characters percent-encoded.
- Datadog
- Dash0
- Other OTLP provider
Datadog recommends an Agent or OpenTelemetry Collector for production. Its direct OTLP intake is a
fallback when a collector is not feasible and may require signal-specific settings.The example is for Datadog US1. Select the endpoint for your Datadog site and review its current
direct OTLP intake requirements.
Verify before enabling a project
- Start Keyring and confirm there are no collector configuration errors.
- Run one read-only tool call through a test Composio project.
- Find
service.name=keyringand anaudit.operationrecord in your telemetry backend. - Join the audit event to its logs and trace using the Keyring request ID.
- In a test environment, interrupt telemetry delivery and confirm Keyring does not release a protected success response.
best_effort keeps requests moving without acknowledged audit delivery. Use it only for local
evaluation or when your organization has explicitly accepted that production risk.
For the event fields and security guarantees, see Audit and observability.