Logging and observability

Configure logging, distributed tracing, and metrics for the self-hosted io.sign backend

Configure these environment variables on the io.sign backend described in Configuration.

Logging

LOG_LEVEL=info
LOG_PRETTY=false

Observability

io.sign uses OpenTelemetry (OTEL) for distributed tracing and metrics across all four components. Point the service at an OTLP collector:

OTEL_EXPORTER_OTLP_ENDPOINT=http://<collector-host>:4318
OTEL_SERVICE_NAME=io-sign
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production

The service auto-instruments incoming REST and gRPC requests, PostgreSQL queries, Redis operations, outgoing HTTP calls such as JWKS fetches, and TLS handshakes.

VariableRequiredDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINTYesnoneOTLP collector endpoint, for example http://localhost:4318
OTEL_SERVICE_NAMEYesnoneService name for trace identification, for example io-sign-rest
OTEL_RESOURCE_ATTRIBUTESNononeExtra resource attributes, for example deployment.environment=prod
OTEL_TRACES_SAMPLERNoparentbased_always_onSampling strategy. Use parentbased_traceidratio in production
OTEL_TRACES_SAMPLER_ARGNo1.0Sampling ratio from 0.0 to 1.0. Set to 0.1 for 10% sampling in production
OTEL_TRACES_EXPORTERNootlpSet to none to disable trace export
OTEL_METRICS_EXPORTERNootlpSet to none to disable metric export

To disable telemetry export entirely, for example in local development without a collector:

OTEL_TRACES_EXPORTER=none
OTEL_METRICS_EXPORTER=none

Did this page help you?