Skip to content

SpikeeLabs/sentry-dynamic-sampling-lib

This branch is 3 commits ahead of main.

Folders and files

NameName
Last commit message
Last commit date
Oct 11, 2024
May 30, 2023
May 30, 2023
Jan 9, 2023
Feb 27, 2023
Jan 9, 2023
Jan 27, 2023
Jan 11, 2023
Jun 17, 2023
Jun 2, 2023
May 30, 2023

Repository files navigation

Sentry Dynamic Sampling Controller

PyPI Tests Status codecov PyPI - Python Version PyPI - License


This project aims to provide dynamic sampling without relying on Sentry own's Dynamic Sampling. This libs works by adding a traces_sampler callback to sentry. In the background a thread fetch the data from the controller It's also able to ignore WSGI route an Celery task set in controller.

Usage

import sentry_sdk
from sentry_dynamic_sampling_lib import init_wrapper

# init sentry as usual
# without traces_sampler and sample_rate param
sentry_sdk.init(  # pylint: disable=E0110
    dsn=SENTRY_DSN,
    integrations=[],
    environment=ENVIRONMENT,
    release=SENTRY_RELEASE,
)

# hook sentry_dynamic_sampling_lib into sentry
init_wrapper()

Configuration

The following environment variables can be used to configure the lib

SENTRY_CONTROLLER_HOST=none # (required, no default)
SENTRY_CONTROLLER_PATH="/sentry/apps/{}/" # (optional, default to example)
SENTRY_CONTROLLER_METRIC_PATH="/sentry/apps/{}/metrics/{}/" # (optional, default to example)
SENTRY_CONTROLLER_POLL_INTERVAL=60 # (optional, default to example)
SENTRY_CONTROLLER_METRIC_INTERVAL=600 # (optional, default to example)

Development

# install deps
poetry install

# pre-commit
poetry run pre-commit install --install-hook
poetry run pre-commit install --install-hooks --hook-type commit-msg