Skip to content
Follow yggy on LinkedInFollow @yggy_tech on X

Export logs over OTLP

Organization owners and admins on Pro or Enterprise can send the organization’s logs to their own OpenTelemetry-compatible log tool, for example Datadog, Grafana or Splunk. yggy keeps its own copy either way.

  1. Open Security → Log export.
  2. Enter the OTLP HTTP endpoint: the /v1/logs endpoint of your OpenTelemetry collector.
  3. Optionally set the Service name, Service namespace and Environment that mark the records.
  4. Add the Request headers your collector needs, such as an authorization header, one Name: value per line. yggy encrypts the values and never shows them again; the page lists only the names. Headers you enter later replace the stored ones, and a blank field keeps them.
  5. Choose the Streams: Audit events, API requests, or both. At least one is required.
  6. Save.

An organization has one export destination. Remove stops the export.

yggy checks the endpoint when you save and again before every delivery. It must:

  • be a valid URL that ends in /v1/logs,
  • use HTTPS,
  • not contain a user name or password,
  • resolve to a public address, not a private or local one.

yggy connects to the address it checked and does not follow redirects. Your collector must answer with a 2xx status within 5 seconds, or the delivery counts as failed.

You can add up to 20 headers. Header names may use only letters, digits and the punctuation HTTP allows in header names, such as -, _ and .. A value can be up to 4096 characters, on one line. Content-Type, Content-Length, Host, Connection and Transfer-Encoding are set by yggy and cannot be added.

StreamWhat it holdsDelivery
Audit eventsThe organization’s audit events, such as sign-ins, API keys, member and role changes, providers and MCP actionsWith retries, so a short outage on your side delays events.
API requestsOne record per request in Request logsBest effort: yggy sends each batch, tries once more after 2 seconds, then drops it. An outage on your side can leave gaps. The requests stay in Developers → Usage and logs for 30 days.

For the API requests stream, Security → Log export shows when the last export ran and how many records it sent, or that it failed.

Both streams send OTLP log records as JSON over HTTP. Each batch names its source in the resource attributes:

AttributeValue
service.nameAudit events: the service name you set (default audit). API requests: always api-requests.
service.namespaceThe service namespace you set (default yggdrasil).
service.versionThe yggy version.
deployment.environment.nameThe environment you set, when set.
organization.idYour organization id.

The severity is INFO for a success, WARN for a partial result and ERROR for a failure. The event name is the audit event type. The body is JSON with eventType, action, result and metadata. Attributes without a value are left out.

AttributeValue
log.record.uid, audit.event_idThe audit event id
audit.event_typeThe event type
audit.actionWhat was done
audit.resultsuccess, partial or failure
audit.resource.type, audit.resource.idWhat it was done to
audit.actor.id, audit.actor.typeWho did it
audit.organization.idYour organization id
client.addressThe client IP, when known
user_agent.originalThe user agent, when known

The event name is api.request. The severity is ERROR for a 5xx status, WARN for a 4xx status and INFO otherwise. Attributes without a value are left out.

AttributeValue
http.request.methodThe HTTP method
http.routeThe route the request matched
http.response.status_codeThe status code
client.addressThe client IP
yggy.request.idThe request ID, the same as the x-request-id response header
yggy.credential.kindapi_key_user (personal key), api_key_org (organization key) or oauth (connected app)
yggy.credential.idThe id of the key or app
yggy.user.idThe member the request acted as
yggy.error.codeThe error code of a failed request
yggy.mcp.method, yggy.mcp.toolThe MCP method and tool, for MCP requests
yggy.latency_msThe response time in milliseconds