Skip to main content
The Apitally SDK provides options for sampling request logs and traces and excluding requests you don’t want to capture.
Requests excluded or sampled out won’t be logged, but are still counted in metrics. To exclude endpoints from metrics, you can mark them as excluded in the dashboard.

Default exclusions

The SDK automatically excludes common static assets and health check endpoints, such as /robots.txt or /healthz. See the data privacy page for more information about default exclusions.

Sample rate

If your application receives a lot of traffic, you may want to sample requests to stay within your request logs quota. Use SampleRate to capture only a fraction of requests. The default is 1.0, which captures all requests.
To apply different sample rates based on custom criteria, see Custom sampling below.

Custom sampling

For more control over which requests are captured, provide a callback function via SampleOnRequest or SampleOnResponse. Each callback receives the request span, with metadata available through span.Attributes(). Choose the callback based on when the information you need is available:
  • SampleOnRequest runs when the request starts, before it is handled. Request attributes such as http.request.method, url.path, url.query and user_agent.original are available at this point. Dropped requests are discarded immediately, so this has less overhead.
  • SampleOnResponse runs after the response is complete. Use it when the decision depends on attributes such as http.route, http.response.status_code, apitally.consumer.identifier, or custom attributes set with SetRequestAttributes. It can’t recover requests that SampleRate or SampleOnRequest already sampled out.
The callback should return 0, true to discard the request, 1, true to capture it, or a probability between 0.0 and 1.0 with true. Returning false as the second value from SampleOnRequest applies SampleRate, and from SampleOnResponse preserves the earlier sampling decision.

Exclude paths

To exclude requests based on their path, provide regular expressions via the ExcludePaths option. These match the actual request path (e.g. /users/123), not the endpoint route pattern (e.g. /users/:id). Query parameters are ignored. Patterns are case-insensitive and match anywhere within the path. Use ^ and $ anchors for exact matches.