- Collect only the data that’s required
- Offer extensive configuration options to control data collection, masking and filtering
- Provide full transparency about what data is collected and how it’s handled
Data collection
This is a complete overview of the data collected by Apitally. Icons indicate configurable data collection and masking support: = Configurable, collected by default= Configurable, not collected by default
= Supports masking
Application metadata
The Apitally SDKs record details of your application’s API, configuration and runtime environment.Endpoints
Endpoints
HTTP methods and route paths identified by the SDK, with summaries and descriptions where the framework provides them.Example:
Framework and versions
Framework and versions
Framework identifier, runtime and framework package versions, and an application version if you provide one.Example versions:
SDK configuration
SDK configuration
SDK settings, including capture and sampling settings and custom masking and exclusion patterns. Configured callbacks are recorded as
true, not their code. The write token is excluded.OpenAPI specification
OpenAPI specification
The complete generated OpenAPI specification, when available from FastAPI, Litestar, Django REST Framework or Django Ninja.
Resource attributes
Resource attributes
Service name, a random instance identifier, environment, and the names and versions of the Apitally and OpenTelemetry SDKs.Custom OpenTelemetry resource attributes supplied through environment variables or an existing provider are also included.
Application metrics
CPU utilization, memory usage and uptime are measured periodically for each application process.CPU utilization
CPU utilization
CPU utilization of the application process.
Memory usage
Memory usage
Resident memory usage of the application process.
Uptime
Uptime
Uptime in seconds.
Request metrics
Request measurements are combined into counts and histograms within your application before being sent to Apitally.HTTP method and path
HTTP method and path
Method and path of the endpoint that handled the request.Example:
POST /v1/ordersResponse status code
Response status code
Status code of the response.Example:
200 OKRequest size
Request size
Size of the request body. Recorded as a histogram.Example:
5 KBResponse size
Response size
Size of the response body. Recorded as a histogram.Example:
5 KBResponse time
Response time
Time taken by your application to respond to the request. Recorded as a histogram.Example:
80 msConsumer
Consumer
Consumer identifier, and optionally name, group and custom attributes, as provided by your own implementation.See the setup guide for your framework for how to associate requests with consumers.Example:
Validation error info
Validation error info
Details about validation errors leading to a
4xx response. Includes source, field name, message and error type.Only captured if a supported framework is used. See here for details.Example:Exception info
Exception info
Exception type, message and stack trace. May also include a Sentry event ID, if available.Only captured if an exception occurred during request handling, leading to a
500 Internal Server Error response.Example:Request logs
Request logs contain details of individual requests, along with associated application logs and traces.HTTP method and path
HTTP method and path
Method and path of the endpoint that handled the request.Example:
POST /v1/ordersURL
URL
The full request URL, including query parameters.Default masking rules apply to query parameter values. Additional masking rules can be specified using
mask_query_params.Example: https://api.example.com/v1/books?search=api+designClient IP
Client IP
IP address of the client, as reported by your framework.Example:
192.0.2.1User agent
User agent
User agent string identifying the client software.Example:
curl/8.10.1Response status code
Response status code
Example:
200 OKRequest size
Request size
Size of the request body in bytes.Example:
4786 bytesRequest headers
Request headers
Only collected if enabled via
capture_request_headers (disabled by default). Default masking rules apply. Additional masking rules can be specified using mask_headers.Example:Request body
Request body
Only collected if enabled via
capture_request_body (disabled by default). Default masking rules apply. Additional masking rules can be specified using mask_body_fields and mask_request_body.Example:Response size
Response size
Size of the response body in bytes.Example:
4678 bytesResponse headers
Response headers
Can be disabled via
capture_response_headers (enabled by default). Default masking rules apply. Additional masking rules can be specified using mask_headers.Example:Response body
Response body
Only collected if enabled via
capture_response_body (disabled by default). Default masking rules apply. Additional masking rules can be specified using mask_body_fields and mask_response_body.Example:Response time
Response time
Time taken by your application to respond to the request.Example:
82 msConsumer
Consumer
Consumer identifier, and optionally name, group and custom attributes, as provided by your own implementation.See the setup guide for your framework for how to associate requests with consumers.Example:
Application logs
Application logs
Application log records associated with the request, including messages, timestamps, severity, logger information and available attributes.Can be disabled via
capture_logs (enabled by default).Example:Traces
Traces
The request span and associated OpenTelemetry spans, including their attributes. These can contain custom request attributes, outgoing request URLs and database queries supplied by instrumentation.Example:
Exception info
Exception info
Exception type, message and stack trace recorded in the request’s trace. May also include a Sentry event ID, if available.Example:
Data masking
The Apitally SDKs mask common sensitive query parameters, headers and request/response body fields on the client side using the default patterns (regular expressions) below. These default patterns are case-insensitive and match anywhere within the name. You can add additional patterns using the configuration options in each section.Query parameters
mask_query_params option.
Headers
mask_headers option.
Body fields
The following patterns apply to string-valued fields in JSON request and response bodies.mask_body_fields option. For more granular control you can also specify callback functions via mask_request_body and mask_response_body.
Application logs
You can mask application log messages using themask_log_record callback.
See the SDK reference for Python, JavaScript, Go or .NET.