Ejemplo n.º 1
0
def test_default_library_paths(version_tuple, python_implementation, system):
    cases = (
        ("Linux", ("3", "5", "1"), "CPython",
         ["*/lib/python3.5/*", "*/lib64/python3.5/*"]),
        ("Linux", ("2", "7", "9"), "CPython",
         ["*/lib/python2.7/*", "*/lib64/python2.7/*"]),
        ("Windows", ("3", "5", "1"), "CPython", ["*\\lib\\*"]),
        ("Windows", ("2", "7", "9"), "CPython", ["*\\lib\\*"]),
        ("Linux", ("3", "6", "3"), "PyPy",
         ["*/lib-python/3/*", "*/site-packages/*"]),
        ("Linux", ("2", "7", "9"), "PyPy",
         ["*/lib-python/2.7/*", "*/site-packages/*"]),
    )
    for system_name, version, implementation, expected in cases:
        system.return_value = system_name
        version_tuple.return_value = version
        python_implementation.return_value = implementation

        assert compat.get_default_library_patters() == expected
Ejemplo n.º 2
0
def test_default_library_paths(version_tuple, python_implementation, system):
    cases = (
        ('Linux', ('3', '5', '1'), 'CPython',
         ['*/lib/python3.5/*', '*/lib64/python3.5/*']),
        ('Linux', ('2', '7', '9'), 'CPython',
         ['*/lib/python2.7/*', '*/lib64/python2.7/*']),
        ('Windows', ('3', '5', '1'), 'CPython', ['*\\lib\\*']),
        ('Windows', ('2', '7', '9'), 'CPython', ['*\\lib\\*']),
        ('Linux', ('3', '6', '3'), 'PyPy',
         ['*/lib-python/3/*', '*/site-packages/*']),
        ('Linux', ('2', '7', '9'), 'PyPy',
         ['*/lib-python/2.7/*', '*/site-packages/*']),
    )
    for system_name, version, implementation, expected in cases:
        system.return_value = system_name
        version_tuple.return_value = version
        python_implementation.return_value = implementation

        assert compat.get_default_library_patters() == expected
Ejemplo n.º 3
0
class Config(_ConfigBase):
    service_name = _ConfigValue(
        "SERVICE_NAME",
        validators=[RegexValidator("^[a-zA-Z0-9 _-]+$")],
        default="unknown-python-service",
        required=True,
    )
    service_node_name = _ConfigValue("SERVICE_NODE_NAME")
    environment = _ConfigValue("ENVIRONMENT")
    secret_token = _ConfigValue("SECRET_TOKEN")
    api_key = _ConfigValue("API_KEY")
    debug = _BoolConfigValue("DEBUG", default=False)
    server_url = _ConfigValue("SERVER_URL",
                              default="http://localhost:8200",
                              required=True)
    server_cert = _ConfigValue("SERVER_CERT",
                               validators=[FileIsReadableValidator()])
    verify_server_cert = _BoolConfigValue("VERIFY_SERVER_CERT", default=True)
    use_certifi = _BoolConfigValue("USE_CERTIFI", default=True)
    include_paths = _ListConfigValue("INCLUDE_PATHS")
    exclude_paths = _ListConfigValue(
        "EXCLUDE_PATHS", default=compat.get_default_library_patters())
    filter_exception_types = _ListConfigValue("FILTER_EXCEPTION_TYPES")
    server_timeout = _ConfigValue(
        "SERVER_TIMEOUT",
        type=float,
        validators=[
            UnitValidator(r"^((?:-)?\d+)(ms|s|m)?$", r"\d+(ms|s|m)", {
                "ms": 0.001,
                "s": 1,
                "m": 60,
                None: 1000
            })
        ],
        default=5,
    )
    hostname = _ConfigValue("HOSTNAME", default=socket.gethostname())
    auto_log_stacks = _BoolConfigValue("AUTO_LOG_STACKS", default=True)
    transport_class = _ConfigValue(
        "TRANSPORT_CLASS",
        default="elasticapm.transport.http.Transport",
        required=True)
    processors = _ListConfigValue(
        "PROCESSORS",
        default=[
            "elasticapm.processors.sanitize_stacktrace_locals",
            "elasticapm.processors.sanitize_http_request_cookies",
            "elasticapm.processors.sanitize_http_response_cookies",
            "elasticapm.processors.sanitize_http_headers",
            "elasticapm.processors.sanitize_http_wsgi_env",
            "elasticapm.processors.sanitize_http_request_body",
        ],
    )
    sanitize_field_names = _ListConfigValue("SANITIZE_FIELD_NAMES",
                                            type=starmatch_to_regex,
                                            default=BASE_SANITIZE_FIELD_NAMES)
    metrics_sets = _ListConfigValue(
        "METRICS_SETS",
        default=[
            "elasticapm.metrics.sets.cpu.CPUMetricSet",
        ],
    )
    metrics_interval = _ConfigValue(
        "METRICS_INTERVAL",
        type=int,
        validators=[
            duration_validator,
            ExcludeRangeValidator(1, 999, "{range_start} - {range_end} ms")
        ],
        default=30000,
    )
    breakdown_metrics = _BoolConfigValue("BREAKDOWN_METRICS", default=True)
    prometheus_metrics = _BoolConfigValue("PROMETHEUS_METRICS", default=False)
    prometheus_metrics_prefix = _ConfigValue("PROMETHEUS_METRICS_PREFIX",
                                             default="prometheus.metrics.")
    disable_metrics = _ListConfigValue("DISABLE_METRICS",
                                       type=starmatch_to_regex,
                                       default=[])
    central_config = _BoolConfigValue("CENTRAL_CONFIG", default=True)
    api_request_size = _ConfigValue("API_REQUEST_SIZE",
                                    type=int,
                                    validators=[size_validator],
                                    default=768 * 1024)
    api_request_time = _ConfigValue("API_REQUEST_TIME",
                                    type=int,
                                    validators=[duration_validator],
                                    default=10 * 1000)
    transaction_sample_rate = _ConfigValue(
        "TRANSACTION_SAMPLE_RATE",
        type=float,
        validators=[PrecisionValidator(4, 0.0001)],
        default=1.0)
    transaction_max_spans = _ConfigValue("TRANSACTION_MAX_SPANS",
                                         type=int,
                                         default=500)
    stack_trace_limit = _ConfigValue("STACK_TRACE_LIMIT",
                                     type=int,
                                     default=500)
    span_frames_min_duration = _ConfigValue(
        "SPAN_FRAMES_MIN_DURATION",
        default=5,
        validators=[
            UnitValidator(r"^((?:-)?\d+)(ms|s|m)?$", r"\d+(ms|s|m)", {
                "ms": 1,
                "s": 1000,
                "m": 60000,
                None: 1
            })
        ],
        type=int,
    )
    span_compression_enabled = _BoolConfigValue("SPAN_COMPRESSION_ENABLED",
                                                default=False)
    span_compression_exact_match_max_duration = _ConfigValue(
        "SPAN_COMPRESSION_EXACT_MATCH_MAX_DURATION",
        default=50,
        validators=[duration_validator],
        type=int,
    )
    span_compression_same_kind_max_duration = _ConfigValue(
        "SPAN_COMPRESSION_SAME_KIND_MAX_DURATION",
        default=5,
        validators=[duration_validator],
        type=int,
    )
    exit_span_min_duration = _ConfigValue(
        "EXIT_SPAN_MIN_DURATION",
        default=1,
        validators=[duration_validator],
        type=float,
    )
    collect_local_variables = _ConfigValue("COLLECT_LOCAL_VARIABLES",
                                           default="errors")
    source_lines_error_app_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_APP_FRAMES", type=int, default=5)
    source_lines_error_library_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_LIBRARY_FRAMES", type=int, default=5)
    source_lines_span_app_frames = _ConfigValue("SOURCE_LINES_SPAN_APP_FRAMES",
                                                type=int,
                                                default=0)
    source_lines_span_library_frames = _ConfigValue(
        "SOURCE_LINES_SPAN_LIBRARY_FRAMES", type=int, default=0)
    local_var_max_length = _ConfigValue("LOCAL_VAR_MAX_LENGTH",
                                        type=int,
                                        default=200)
    local_var_list_max_length = _ConfigValue("LOCAL_VAR_LIST_MAX_LENGTH",
                                             type=int,
                                             default=10)
    local_var_dict_max_length = _ConfigValue("LOCAL_VAR_DICT_MAX_LENGTH",
                                             type=int,
                                             default=10)
    capture_body = _ConfigValue(
        "CAPTURE_BODY",
        default="off",
        validators=[
            lambda val, _: {
                "errors": "error",
                "transactions": "transaction"
            }.get(val, val)
        ],
    )
    async_mode = _BoolConfigValue("ASYNC_MODE", default=True)
    instrument_django_middleware = _BoolConfigValue(
        "INSTRUMENT_DJANGO_MIDDLEWARE", default=True)
    autoinsert_django_middleware = _BoolConfigValue(
        "AUTOINSERT_DJANGO_MIDDLEWARE", default=True)
    transactions_ignore_patterns = _ListConfigValue(
        "TRANSACTIONS_IGNORE_PATTERNS", default=[])
    transaction_ignore_urls = _ListConfigValue("TRANSACTION_IGNORE_URLS",
                                               type=starmatch_to_regex,
                                               default=[])
    service_version = _ConfigValue("SERVICE_VERSION")
    framework_name = _ConfigValue("FRAMEWORK_NAME")
    framework_version = _ConfigValue("FRAMEWORK_VERSION")
    global_labels = _DictConfigValue("GLOBAL_LABELS")
    disable_send = _BoolConfigValue("DISABLE_SEND", default=False)
    enabled = _BoolConfigValue("ENABLED", default=True)
    recording = _BoolConfigValue("RECORDING", default=True)
    instrument = _BoolConfigValue("INSTRUMENT", default=True)
    enable_distributed_tracing = _BoolConfigValue("ENABLE_DISTRIBUTED_TRACING",
                                                  default=True)
    capture_headers = _BoolConfigValue("CAPTURE_HEADERS", default=True)
    django_transaction_name_from_route = _BoolConfigValue(
        "DJANGO_TRANSACTION_NAME_FROM_ROUTE", default=False)
    disable_log_record_factory = _BoolConfigValue("DISABLE_LOG_RECORD_FACTORY",
                                                  default=False)
    use_elastic_traceparent_header = _BoolConfigValue(
        "USE_ELASTIC_TRACEPARENT_HEADER", default=True)
    use_elastic_excepthook = _BoolConfigValue("USE_ELASTIC_EXCEPTHOOK",
                                              default=False)
    cloud_provider = _ConfigValue("CLOUD_PROVIDER", default=True)
    log_level = _ConfigValue(
        "LOG_LEVEL",
        validators=[
            EnumerationValidator([
                "trace", "debug", "info", "warning", "warn", "error",
                "critical", "off"
            ])
        ],
        callbacks=[_log_level_callback],
    )
    log_file = _ConfigValue("LOG_FILE", default="")
    log_file_size = _ConfigValue("LOG_FILE_SIZE",
                                 validators=[size_validator],
                                 type=int,
                                 default=50 * 1024 * 1024)
    log_ecs_reformatting = _ConfigValue(
        "LOG_ECS_REFORMATTING",
        validators=[EnumerationValidator(["off", "override"])],
        callbacks=[_log_ecs_reformatting_callback],
        default="off",
    )

    @property
    def is_recording(self):
        if not self.enabled:
            return False
        else:
            return self.recording
Ejemplo n.º 4
0
class Config(_ConfigBase):
    service_name = _ConfigValue(
        'SERVICE_NAME',
        validators=[lambda val: re.match('^[a-zA-Z0-9 _-]+$', val)],
        required=True)
    environment = _ConfigValue('ENVIRONMENT', default=None)
    secret_token = _ConfigValue('SECRET_TOKEN')
    debug = _BoolConfigValue('DEBUG', default=False)
    server_url = _ConfigValue('SERVER_URL',
                              default='http://localhost:8200',
                              required=True)
    verify_server_cert = _BoolConfigValue('VERIFY_SERVER_CERT', default=True)
    include_paths = _ListConfigValue('INCLUDE_PATHS')
    exclude_paths = _ListConfigValue(
        'EXCLUDE_PATHS', default=compat.get_default_library_patters())
    filter_exception_types = _ListConfigValue('FILTER_EXCEPTION_TYPES')
    server_timeout = _ConfigValue('SERVER_TIMEOUT', type=float, default=5)
    hostname = _ConfigValue('HOSTNAME', default=socket.gethostname())
    auto_log_stacks = _BoolConfigValue('AUTO_LOG_STACKS', default=True)
    transport_class = _ConfigValue(
        'TRANSPORT_CLASS',
        default='elasticapm.transport.http.AsyncTransport',
        required=True)
    processors = _ListConfigValue(
        'PROCESSORS',
        default=[
            'elasticapm.processors.sanitize_stacktrace_locals',
            'elasticapm.processors.sanitize_http_request_cookies',
            'elasticapm.processors.sanitize_http_headers',
            'elasticapm.processors.sanitize_http_wsgi_env',
            'elasticapm.processors.sanitize_http_request_querystring',
            'elasticapm.processors.sanitize_http_request_body',
        ])
    flush_interval = _ConfigValue('FLUSH_INTERVAL', type=int, default=10)
    transaction_sample_rate = _ConfigValue('TRANSACTION_SAMPLE_RATE',
                                           type=float,
                                           default=1.0)
    transaction_max_spans = _ConfigValue('TRANSACTION_MAX_SPANS',
                                         type=int,
                                         default=500)
    span_frames_min_duration_ms = _ConfigValue('SPAN_FRAMES_MIN_DURATION',
                                               default=-1,
                                               type=int)
    max_queue_size = _ConfigValue('MAX_QUEUE_SIZE', type=int, default=500)
    collect_local_variables = _ConfigValue('COLLECT_LOCAL_VARIABLES',
                                           default='errors')
    source_lines_error_app_frames = _ConfigValue(
        'SOURCE_LINES_ERROR_APP_FRAMES', type=int, default=5)
    source_lines_error_library_frames = _ConfigValue(
        'SOURCE_LINES_ERROR_LIBRARY_FRAMES', type=int, default=5)
    source_lines_span_app_frames = _ConfigValue('SOURCE_LINES_SPAN_APP_FRAMES',
                                                type=int,
                                                default=0)
    source_lines_span_library_frames = _ConfigValue(
        'SOURCE_LINES_SPAN_LIBRARY_FRAMES', type=int, default=0)
    local_var_max_length = _ConfigValue('LOCAL_VAR_MAX_LENGTH',
                                        type=int,
                                        default=200)
    local_var_list_max_length = _ConfigValue('LOCAL_VAR_LIST_MAX_LENGTH',
                                             type=int,
                                             default=10)
    capture_body = _ConfigValue('CAPTURE_BODY', default='off')
    async_mode = _BoolConfigValue('ASYNC_MODE', default=True)
    instrument_django_middleware = _BoolConfigValue(
        'INSTRUMENT_DJANGO_MIDDLEWARE', default=True)
    transactions_ignore_patterns = _ListConfigValue(
        'TRANSACTIONS_IGNORE_PATTERNS', default=[])
    service_version = _ConfigValue('SERVICE_VERSION')
    framework_name = _ConfigValue('FRAMEWORK_NAME', default=None)
    framework_version = _ConfigValue('FRAMEWORK_VERSION', default=None)
    disable_send = _BoolConfigValue('DISABLE_SEND', default=False)
    instrument = _BoolConfigValue('DISABLE_INSTRUMENTATION', default=True)

    # undocumented configuration
    _wait_to_first_send = _ConfigValue('_WAIT_TO_FIRST_SEND',
                                       type=int,
                                       default=5)
Ejemplo n.º 5
0
class Config(_ConfigBase):
    service_name = _ConfigValue(
        "SERVICE_NAME",
        validators=[RegexValidator("^[a-zA-Z0-9 _-]+$")],
        required=True)
    environment = _ConfigValue("ENVIRONMENT", default=None)
    secret_token = _ConfigValue("SECRET_TOKEN")
    debug = _BoolConfigValue("DEBUG", default=False)
    server_url = _ConfigValue("SERVER_URL",
                              default="http://localhost:8200",
                              required=True)
    server_cert = _ConfigValue("SERVER_CERT",
                               default=None,
                               required=False,
                               validators=[FileIsReadableValidator()])
    verify_server_cert = _BoolConfigValue("VERIFY_SERVER_CERT", default=True)
    include_paths = _ListConfigValue("INCLUDE_PATHS")
    exclude_paths = _ListConfigValue(
        "EXCLUDE_PATHS", default=compat.get_default_library_patters())
    filter_exception_types = _ListConfigValue("FILTER_EXCEPTION_TYPES")
    server_timeout = _ConfigValue(
        "SERVER_TIMEOUT",
        type=float,
        validators=[
            UnitValidator(r"^((?:-)?\d+)(ms|s|m)?$", r"\d+(ms|s|m)", {
                "ms": 0.001,
                "s": 1,
                "m": 60,
                None: 1000
            })
        ],
        default=5,
    )
    hostname = _ConfigValue("HOSTNAME", default=socket.gethostname())
    auto_log_stacks = _BoolConfigValue("AUTO_LOG_STACKS", default=True)
    transport_class = _ConfigValue(
        "TRANSPORT_CLASS",
        default="elasticapm.transport.http.AsyncTransport",
        required=True)
    processors = _ListConfigValue(
        "PROCESSORS",
        default=[
            "elasticapm.processors.sanitize_stacktrace_locals",
            "elasticapm.processors.sanitize_http_request_cookies",
            "elasticapm.processors.sanitize_http_response_cookies",
            "elasticapm.processors.sanitize_http_headers",
            "elasticapm.processors.sanitize_http_wsgi_env",
            "elasticapm.processors.sanitize_http_request_querystring",
            "elasticapm.processors.sanitize_http_request_body",
        ],
    )
    metrics_sets = _ListConfigValue(
        "METRICS_SETS",
        default=[
            "elasticapm.metrics.sets.cpu.CPUMetricSet",
            "elasticapm.metrics.sets.transactions.TransactionsMetricSet",
        ],
    )
    metrics_interval = _ConfigValue(
        "METRICS_INTERVAL",
        type=int,
        validators=[
            duration_validator,
            ExcludeRangeValidator(1, 999, "{range_start} - {range_end} ms")
        ],
        default=30000,
    )
    breakdown_metrics = _BoolConfigValue("BREAKDOWN_METRICS", default=True)
    disable_metrics = _ListConfigValue("DISABLE_METRICS",
                                       type=starmatch_to_regex,
                                       default=[])
    central_config = _BoolConfigValue("CENTRAL_CONFIG", default=True)
    api_request_size = _ConfigValue("API_REQUEST_SIZE",
                                    type=int,
                                    validators=[size_validator],
                                    default=750 * 1024)
    api_request_time = _ConfigValue("API_REQUEST_TIME",
                                    type=int,
                                    validators=[duration_validator],
                                    default=10 * 1000)
    transaction_sample_rate = _ConfigValue("TRANSACTION_SAMPLE_RATE",
                                           type=float,
                                           default=1.0)
    transaction_max_spans = _ConfigValue("TRANSACTION_MAX_SPANS",
                                         type=int,
                                         default=500)
    stack_trace_limit = _ConfigValue("STACK_TRACE_LIMIT",
                                     type=int,
                                     default=500)
    span_frames_min_duration = _ConfigValue(
        "SPAN_FRAMES_MIN_DURATION",
        default=5,
        validators=[
            UnitValidator(r"^((?:-)?\d+)(ms|s|m)?$", r"\d+(ms|s|m)", {
                "ms": 1,
                "s": 1000,
                "m": 60000,
                None: 1
            })
        ],
        type=int,
    )
    collect_local_variables = _ConfigValue("COLLECT_LOCAL_VARIABLES",
                                           default="errors")
    source_lines_error_app_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_APP_FRAMES", type=int, default=5)
    source_lines_error_library_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_LIBRARY_FRAMES", type=int, default=5)
    source_lines_span_app_frames = _ConfigValue("SOURCE_LINES_SPAN_APP_FRAMES",
                                                type=int,
                                                default=0)
    source_lines_span_library_frames = _ConfigValue(
        "SOURCE_LINES_SPAN_LIBRARY_FRAMES", type=int, default=0)
    local_var_max_length = _ConfigValue("LOCAL_VAR_MAX_LENGTH",
                                        type=int,
                                        default=200)
    local_var_list_max_length = _ConfigValue("LOCAL_VAR_LIST_MAX_LENGTH",
                                             type=int,
                                             default=10)
    local_var_dict_max_length = _ConfigValue("LOCAL_VAR_DICT_MAX_LENGTH",
                                             type=int,
                                             default=10)
    capture_body = _ConfigValue("CAPTURE_BODY", default="off")
    async_mode = _BoolConfigValue("ASYNC_MODE", default=True)
    instrument_django_middleware = _BoolConfigValue(
        "INSTRUMENT_DJANGO_MIDDLEWARE", default=True)
    autoinsert_django_middleware = _BoolConfigValue(
        "AUTOINSERT_DJANGO_MIDDLEWARE", default=True)
    transactions_ignore_patterns = _ListConfigValue(
        "TRANSACTIONS_IGNORE_PATTERNS", default=[])
    service_version = _ConfigValue("SERVICE_VERSION")
    framework_name = _ConfigValue("FRAMEWORK_NAME", default=None)
    framework_version = _ConfigValue("FRAMEWORK_VERSION", default=None)
    global_labels = _DictConfigValue("GLOBAL_LABELS", default=None)
    disable_send = _BoolConfigValue("DISABLE_SEND", default=False)
    instrument = _BoolConfigValue("INSTRUMENT", default=True)
    enable_distributed_tracing = _BoolConfigValue("ENABLE_DISTRIBUTED_TRACING",
                                                  default=True)
    capture_headers = _BoolConfigValue("CAPTURE_HEADERS", default=True)
    django_transaction_name_from_route = _BoolConfigValue(
        "DJANGO_TRANSACTION_NAME_FROM_ROUTE", default=False)
    disable_log_record_factory = _BoolConfigValue("DISABLE_LOG_RECORD_FACTORY",
                                                  default=False)
    use_elastic_traceparent_header = _BoolConfigValue(
        "USE_ELASTIC_TRACEPARENT_HEADER", default=True)
Ejemplo n.º 6
0
class Config(_ConfigBase):
    service_name = _ConfigValue(
        "SERVICE_NAME",
        validators=[RegexValidator("^[a-zA-Z0-9 _-]+$")],
        required=True)
    environment = _ConfigValue("ENVIRONMENT", default=None)
    secret_token = _ConfigValue("SECRET_TOKEN")
    debug = _BoolConfigValue("DEBUG", default=False)
    server_url = _ConfigValue("SERVER_URL",
                              default="http://localhost:8200",
                              required=True)
    verify_server_cert = _BoolConfigValue("VERIFY_SERVER_CERT", default=True)
    include_paths = _ListConfigValue("INCLUDE_PATHS")
    exclude_paths = _ListConfigValue(
        "EXCLUDE_PATHS", default=compat.get_default_library_patters())
    filter_exception_types = _ListConfigValue("FILTER_EXCEPTION_TYPES")
    server_timeout = _ConfigValue(
        "SERVER_TIMEOUT",
        type=float,
        validators=[
            UnitValidator("^((?:-)?\d+)(ms|s|m)?$", "\d+(ms|s|m)", {
                "ms": 0.001,
                "s": 1,
                "m": 60,
                None: 1000
            })
        ],
        default=5,
    )
    hostname = _ConfigValue("HOSTNAME", default=socket.gethostname())
    auto_log_stacks = _BoolConfigValue("AUTO_LOG_STACKS", default=True)
    transport_class = _ConfigValue(
        "TRANSPORT_CLASS",
        default="elasticapm.transport.http.AsyncTransport",
        required=True)
    processors = _ListConfigValue(
        "PROCESSORS",
        default=[
            "elasticapm.processors.sanitize_stacktrace_locals",
            "elasticapm.processors.sanitize_http_request_cookies",
            "elasticapm.processors.sanitize_http_response_cookies",
            "elasticapm.processors.sanitize_http_headers",
            "elasticapm.processors.sanitize_http_wsgi_env",
            "elasticapm.processors.sanitize_http_request_querystring",
            "elasticapm.processors.sanitize_http_request_body",
        ],
    )
    api_request_size = _ConfigValue("API_REQUEST_SIZE",
                                    type=int,
                                    validators=[size_validator],
                                    default=750 * 1024)
    api_request_time = _ConfigValue("API_REQUEST_TIME",
                                    type=int,
                                    validators=[duration_validator],
                                    default=10 * 1000)
    transaction_sample_rate = _ConfigValue("TRANSACTION_SAMPLE_RATE",
                                           type=float,
                                           default=1.0)
    transaction_max_spans = _ConfigValue("TRANSACTION_MAX_SPANS",
                                         type=int,
                                         default=500)
    span_frames_min_duration = _ConfigValue(
        "SPAN_FRAMES_MIN_DURATION",
        default=5,
        validators=[
            UnitValidator("^((?:-)?\d+)(ms|s|m)?$", "\d+(ms|s|m)", {
                "ms": 1,
                "s": 1000,
                "m": 60000,
                None: 1
            })
        ],
        type=int,
    )
    collect_local_variables = _ConfigValue("COLLECT_LOCAL_VARIABLES",
                                           default="errors")
    source_lines_error_app_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_APP_FRAMES", type=int, default=5)
    source_lines_error_library_frames = _ConfigValue(
        "SOURCE_LINES_ERROR_LIBRARY_FRAMES", type=int, default=5)
    source_lines_span_app_frames = _ConfigValue("SOURCE_LINES_SPAN_APP_FRAMES",
                                                type=int,
                                                default=0)
    source_lines_span_library_frames = _ConfigValue(
        "SOURCE_LINES_SPAN_LIBRARY_FRAMES", type=int, default=0)
    local_var_max_length = _ConfigValue("LOCAL_VAR_MAX_LENGTH",
                                        type=int,
                                        default=200)
    local_var_list_max_length = _ConfigValue("LOCAL_VAR_LIST_MAX_LENGTH",
                                             type=int,
                                             default=10)
    capture_body = _ConfigValue("CAPTURE_BODY", default="off")
    async_mode = _BoolConfigValue("ASYNC_MODE", default=True)
    instrument_django_middleware = _BoolConfigValue(
        "INSTRUMENT_DJANGO_MIDDLEWARE", default=True)
    transactions_ignore_patterns = _ListConfigValue(
        "TRANSACTIONS_IGNORE_PATTERNS", default=[])
    service_version = _ConfigValue("SERVICE_VERSION")
    framework_name = _ConfigValue("FRAMEWORK_NAME", default=None)
    framework_version = _ConfigValue("FRAMEWORK_VERSION", default=None)
    disable_send = _BoolConfigValue("DISABLE_SEND", default=False)
    instrument = _BoolConfigValue("DISABLE_INSTRUMENTATION", default=True)
    enable_distributed_tracing = _BoolConfigValue("ENABLE_DISTRIBUTED_TRACING",
                                                  default=True)