Select a sampler: ParentBased(root=TraceIdRatioBased(ratio)) is the most common choice for consistent sampling across services that share a parent context
Set the sampler in SDK initialization via the OTEL_TRACES_SAMPLER environment variable (parentbased_traceidratio) and OTEL_TRACES_SAMPLER_ARG (e.g., 0.1 for 10%)
For services that must always sample high-priority traffic, wrap the ratio sampler with a custom sampler that inspects a baggage key or span attribute before delegating
Propagate the sampling decision in the traceparent header (W3C Trace Context) so downstream services respect the parent's sampling flag without re-sampling
Validate the effective sampling rate by querying span ingestion metrics in your backend and comparing to the configured ratio
Document the chosen ratio per service in a config map or environment variable manifest checked into version control so changes are auditable
Known gotchas
TraceIdRatioBased does not guarantee an exact ratio; it uses a hash of the trace ID, so short time windows may show deviation from the target percentage
Head sampling makes the decision before all spans are collected, meaning slow or error spans may be dropped before their high-value nature is known — use tail sampling if error-trace capture is a requirement
ParentBased respects the parent's flag from remote callers, so an external client that sends unsampled requests will force the root span to be unsampled regardless of local config
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp