OpenTelemetry Integration
Overview
SignalPick integrates seamlessly with OpenTelemetry. The agent acts as an OTLP receiver and exporter, sitting between your application and your collector.
Your App → OTel SDK → SignalPick Agent → OTel Collector → VendorConfiguration
Python
from opentelemetry import tracefrom opentelemetry.sdk.trace import TracerProviderfrom opentelemetry.sdk.trace.export import BatchSpanProcessorfrom opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
# Configure tracertrace.set_tracer_provider(TracerProvider())
# Point to SignalPick agentexporter = OTLPSpanExporter( endpoint="signalpick-agent:4317", insecure=True)
trace.get_tracer_provider().add_span_processor( BatchSpanProcessor(exporter))Node.js
const { NodeSDK } = require('@opentelemetry/sdk-node');const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const sdk = new NodeSDK({ traceExporter: new OTLPTraceExporter({ url: 'grpc://signalpick-agent:4317', }),});
sdk.start();Go
import ( "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc")
exporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithEndpoint("signalpick-agent:4317"), otlptracegrpc.WithInsecure(),)Span Logs
Attach logs to spans instead of sending them separately:
span.add_event("Processing request", { "user_id": user_id, "action": "checkout",})This enables automatic deduplication — SignalPick will aggregate repeated log patterns.