Skip to content

Latest commit

 

History

History
816 lines (557 loc) · 25.3 KB

CHANGELOG.md

File metadata and controls

816 lines (557 loc) · 25.3 KB

Changelog

Pending

Added

  • Support Error Monitoring. See integration docs. (PR #651)
  • Deprecate backtrace.capture in favor of backtrace.capture_backtrace

Fixed

  • Setup metadata keywords now contains an array of strings.
  • Remove non-project paths from traces. (Issue #416)

[2.20.0] 2021-07-21

  • Removed parsing queue time from Amazon ALB header, X-Amzn-Trace-Id. The time portion of the header only has the truncated seconds which appears as about 500ms for queue time constantly. (Issue #631)
  • Added Celery's priority delivery info to the set of tags.
  • Changed max spans reached log level from warning to debug. (Issue #653)
  • Improved debug logging for requests. It now includes some summary information about the request. (Issue #654)
  • Set TrackedRequest.tags("error", "true") when Celery tasks fail. (Issue #649)

[2.19.0] 2021-05-04

Added

  • Tested with Django 3.2. Only define default_app_config when using a version of Django earlier than 3.2.
  • Support instrumentation and transaction decorators for asynchronous functions via @instrument.async_, @WebTransaction.async_ and @BackgroundTransaction.async_. (PR #633)

Fixed

  • Exclude python library paths from backtraces. (PR #514)
  • Preserve tracked request across asyncio tasks. (PR #469)

[2.18.0] 2021-02-09

Added

  • Instrument new Elasticsearch methods close_point_in_time() and open_point_in_time(). (PR #602)

  • The release now includes binary wheels for Linux ARM and Python 3.9.

Fixed

  • Support hex timestamp in Amazon headers (PR #598)
  • Fix a socket resource leak when downloading the core agent. (PR #609)
  • Fix Starlette with ASGI apps that are class instances (Issue #596)

[2.17.0] 2020-09-17

Added

[2.16.2] 2020-09-17

  • Moved core agent on Linux to default to the musl version, rather than try detect whether to use the musl or GNU libc version. (PR #585)

[2.16.1] 2020-09-09

Fixed

  • Added a cast to string of query parameters, to work around cases where application code changes them to non-strings. Fixes a possible exception: AttributeError: 'int' object has no attribute 'encode' in scout.core.web_requests.

[2.16.0] 2020-09-08

Added

  • Changed default agent connection to use TCP rather than a unix socket. By default the agent will be run on 127.0.0.1, port 6590. This should resolve a number of connection issues. To continue using a socket connection, configure core_agent_socket_path. (Issue #553)
  • Tested with Django 3.1. No compatibility changes were required, but this is the first release to be tagged as supporting it.

Fixed

  • Fixed validation check on length of key. (Issue #563)
  • Update Core Agent to version 1.3.0, fixing several bugs and opening the ability to run with only a TCP socket. (Issue #567)

[2.15.2] 2020-07-24

Fixed

  • On Django, only track the current user ID if request.user was accessed by application code. This stops a Vary: Cookie header being injected due to session data access. (Issue #544)

[2.15.1] 2020-07-23

Fixed

  • Always convert collect_remote_ip to boolean. (Issue #542)

[2.15.0] 2020-07-22

Added

  • Extended RQ integration with HerokuWorker class for use in the RQ Heroku pattern. (Issue #529)
  • Added the collect_remote_ip / SCOUT_COLLECT_REMOTE_IP setting which can be set to False to disable storing user IP addresses in Scout traces. (Issue #535)

[2.14.3] 2020-06-05

Fixed

  • Don't log the Scout key during startup. (Issue #297)

[2.14.2] 2020-05-22

Fixed

  • Fix crash when scanning packages that have a Name or Version that is None. (Issue #522)

[2.14.1] 2020-04-28

Fixed

  • Update Core Agent to version 1.2.9, fixing several bugs. (Issue #516)

[2.14.0] 2020-04-08

Fixed

  • Support Django's BASE_DIR setting being a pathlib.Path, as the default template in Django 3.1 will set. (Issue #503)
  • Instrument new Elasticsearch methods get_script_context() and get_script_languages(). (PR #507)
  • Prevent output from the core agent when starting it. (Issue #510)

[2.13.0] 2020-03-09

Added

  • Added config value shutdown_message_enabled / SCOUT_SHUTDOWN_MESSAGE_ENABLED which can be set to "false" to disable the shutdown message "Scout draining N events..."that was added in version 2.11.0. (Issue #498)
  • Renamed config_file, log_file, and socket_path to have the core_agent_ prefix. This is to clarify that they apply only to the core agent process. The old names continue to work as aliases. (Issue #497)
  • Improved some log messages and levels around instrumentation. (Issue #502)

[2.12.0] 2020-03-03

Added

  • Added ability to read configuration from your Celery app. This can help share configuration between Django and Celery. Pass your application as app to have the configuration copied: scout_apm.celery.install(app=app) . (Issue #477)
  • Added maximum span limit of 1500. This prevents memory exhaustion when tracing long running tasks as Scout no longer tries to record everything. (Issue #472)

Fixed

  • Made installation of the objtrace C extension optional, so that if it fails due to your C compiler being old, Scout can still install. (Issue #488)
  • Removed warning for setting the SCOUT_LOG_LEVEL setting, since this is set by default by the Heroku add-on. (Issue #486)

[2.11.0] 2020-02-17

Added

  • Improve Falcon integration: tracing is automatically disabled if installation fails, track middleware, and support class-based responders. (PR #453, PR #460)
  • Add Hug integration. (PR #460)
  • Limit size of recorded tracebacks to reduce memory usage. (PR #476)
  • Scout now flushes any queued commands to the core agent at shutdown, with a configurable timeout shutdown_timeout_seconds, defaulting to 2 seconds. This ensures that all traces are recorded, rather than lost, especially useful for single-run background commands. (Issue # 473)
  • Move from requests to underlying urllib3 for downloads to reduce dependency footprint. (PR #480)
  • Retry downloading the core agent a few times, and use a timeout to prevent startup hangs. (PR #480)

Fixed

  • Moved some user-facing warnings, such as for deprecated features, from logging to warnings, so they can be caught during testing. (PR #468)
  • Fix Jinja2 asynchronous rendering instrumentation for Jinja2 2.11.0+. (PR #462)
  • Stop patching elasticsearch's scripts_painless_context(), because it has been removed in version 7.5.1. (Issue #454)
  • Fix for elasticsearch version 7.5.1's change of positional argument order. (Issue #456)

[2.10.0] 2020-01-02

Added

  • Use Python 3.8's standard library importlib.metadata.distributions() to determine package versions, rather than pkg_resources. The backport package importlib_metadata is required on older Python versions. (PR #430)
  • Add CherryPy integration. (PR #431)
  • Add tracking for missing PyMongo Collection methods. (PR #436)
  • Add tracking for missing Elasticsearch client methods. (PR #438)

Removed

  • Remove the "name" context tag from Flask requests - it only duplicated the request name. (PR #432)

[2.9.1] 2019-12-13

Added

  • Update Core Agent to version 1.2.6, fixing several bugs:

    • Improve SQL statement names in Timeline Traces
    • Standardize on a language_version key in metadata
    • Autoclose spans that are still running when a Request completes

    (PR #415)

Fixed

  • Fix recording of path for unicode query parameters on Python 2.7. (PR #419)

[2.9.0] 2019-11-30

Added

  • Add RQ integration. (PR #375)
  • Track 5XX responses as errors from all web frameworks. (Issue #383)
  • Track Flask's request preprocessors as a span PreprocessRequest. (PR #390)
  • Track Jinja2 asynchronous template rendering. (PR #398)
  • Add Django-Huey integration. (PR #401)

Fixed

  • Track better names for Django REST Framework ViewSets. (PR #380)
  • Always capture SQL tracebacks for executemany queries going over the built-in count threshold. (PR #409)
  • Don't capture internal traceback function's frame in tracebacks. (PR #410)

[2.8.1] 2019-11-19

Fixed

  • Fixed memory allocation tracking, which has been broken since a refactor in version 2.7.0.

[2.8.0] 2019-11-08

Added

  • Move all decorators to the wrapt library which is more transparent. (PR #324)
  • Move context tracking to be async-compatble with asgiref's Local. (PR #349)
  • Add Starlette integration for Python 3.6+. (PR #349)
  • Add Huey integration. (PR #367)

Fixed

  • Track SQL Alchemy executemany calls as multi-queries. (PR #340)
  • Track Elasticsearch index name when it's not passed as a keyword argument. (PR #348)
  • Increase core agent socket timeout to reduce reconnections. (PR #247)
  • Fix the RemovedInDjango20Warning for django.core.urlresolvers on Django 1.11. (PR #359)
  • Correctly disable Bottle if the agent fails to launch. (PR #364)

[2.7.0] 2019-11-03

Added

  • Python 3.8 testing and PyPI trove classifier - no code changes were required so older versions should work too. (PR #263)
  • Capture better operation names for Django Tastypie resources, e.g. myapp.api.UserResource.get_list. (PR #332)

Fixed

  • Change scout_apm.api.install() signature to not take *args, **kwargs but just config as a keyword argument. (PR #304)
  • Rewrite background samplers thread to avoid some rare race conditions. (PR #307)

[2.6.1] 2019-10-23

Fixed

  • Fix warning emitted from using deprecated 'warn' method (PR #283).
  • Improve warning message for deprecated log_level configuration option (PR #288).
  • Track errors on Pyramid (PR #298).
  • Don't start on Windows which is currently not supported (request support on Issue #101) (PR #299).

[2.6.0] 2019-10-22

Deprecated

  • The log_level configuration option is deprecated. Please use the new name core_agent_log_level instead (PR #273).

Added

  • Change default "path" tag on web requests to capture query parameters as well. This can be disabled by setting the config value uri_reporting to "path" (PR #268, PR #269).
  • Track the urlconf on Django, for multi-domain support (PR #276).
  • Track request queue time from the X-Amzn-Trace-Id header, which is sent by AWS ALB's (PR #279).
  • Updated Core Agent version to 1.2.4 to support new features (PR #280).

Fixed

  • Fix Bottle path tagging to use path from URL rather than controller name (PR #267).

[2.5.0] 2019-09-17

Added

  • Support the hostname setting (PR #251).
  • Support timeline trace view (PR #252).
  • Add API function rename_transaction() (PR #129).
  • Updated Core Agent version to 1.2.0 to support new features (PR #253).

Fixed

  • Use the same default socket name that the core agent uses when launched alone (core-agent.sock -> scout-agent.sock) (PR #240).
  • Fix CPU statistics to work when the CPU count cannot be determined (PR #245).

[2.4.1] 2019-08-26

Added

  • Improved logging for debugging customer problems (PR #234).

Fixed

  • Fixed Flask to not monitor requests when SCOUT_MONITOR is set to False (PR #235).
  • Fixed Django to stop monitoring requests when SCOUT_MONITOR is set to False during runtime (PR #236).

[2.4.0] 2019-08-20

Added

  • Add Dramatiq integration (PR #223).
  • Add Nameko integration (PR #212).
  • Track Celery task is_eager, exchange, routing_key and queue tags (PR #205).
  • Track Celery task time in queue with context tag queue_time (PR #206).
  • Track Celery task ID with context tag task_id, and parent task's ID (for chains, chords, etc.) with context tag parent_task_id (PR #227).
  • Improve Django admin views' traced names. Before all admin classes' traces would be merged by function name such as django.contrib.admin.options.changelist_view. Now traces appear per admin class, for example django.contrib.auth.admin.UserAdmin.changelist_view (PR #226).

Fixed

  • Updated Core Agent version to 1.1.11. This fixes the scm_subdirectory configuration option.

[2.3.0] 2019-08-04

Added

  • Use Django's native DB instrumentation on Django 2.0+, rather than monkey patching the database cursor. (PR #218).

Fixed

  • Fix tracking of path on Flask. (PR #221).

[2.2.1] 2019-08-03

Fixed

  • Close file descriptors when launching the core agent process. This fixes a bug where uwsgi's HTTP ports would be held by the it on Python 2.7. (PR #219).

[2.2.0] 2019-07-27

Added

  • Track user IP on Flask (PR #190).
  • Make user IP tracking on Bottle and Pyramid use the same algorithm as other integrations, checking for the client-ip header (PR #192, PR #195).
  • Add support to Bottle, Falcon, Flask and Pyramid integrations for tracking request queue timing (PR #199, PR #201).

Fixed

  • Track path and user IP on Django < 1.10 (PR #190).
  • Fix the undocumented core-agent-manager CLI command (PR #202).
  • Consistently track view responses on Django between different versions (PR #203).
  • Avoid unbalanced request tracking in certain cases on Django < 1.10 (PR #203).
  • Clarified contents of public API by moving some stuff out of it and setting scout_apm.api.__all__ (PR #204).

[2.1.0] 2019-06-25

Added

  • Add support to Django integration for tracking request queue timing from the value of the X-Queue-Start or X-Request-Start header
  • Add Falcon integration

[2.0.5] 2019-06-21

Added

  • Tested on Django 2.2
  • Added PyPI Trove classifiers for frameworks
  • Track usernames on Django < 1.10

Fixed

  • Stop warnings from using deprecated method logger.warn
  • Track some missed requests on Flask such as automatic OPTIONS responses

[2.0.4] 2019-04-18

Fixed

  • Fix 'ignore' functionality on Django < 1.10

[2.0.3] 2019-04-10

Added

  • Add 'scm_subdirectory' config option (PR #155)

Fixed

  • Fixed Elasticsearch integration for queries passing 'index' to elasticsearch-py as a list (PR #156)
  • Fixes "Registering with app" log message not using configured logger (PR #154)

[2.0.2] 2019-02-11

Added

  • Add platform triple to config (PR #151)

[2.0.1] 2019-01-07

Added

  • Adds core_agent_permissions configuration option. (PR #147)

Fixed

  • Remove unused dependency on PyYAML (PR #146)

[2.0.0] 2018-12-18

Added

  • Python 2.7 support
  • Ability to 'ignore' requests via configuration option and scout_apm.api (PR #144)

[1.3.8] 2018-09-28

Added

  • Updated Core Agent version to support Database Addon

[1.3.7] 2018-09-07

Fixed

  • Multi threading lock fix in ThreadLocalSingleton (#127)

[1.3.6] 2018-09-07

Fixed

  • Update Core Agent

[1.3.5] 2018-09-06

Added

  • Enable Memory Bloat and Allocation tracking.

Fixed

  • More reliable socket communication with Core Agent (#126)

[1.3.4] 2018-08-28

Fixed

  • settings.BASE_DIR is optional in Django (#123)

[1.3.3] 2018-08-27

Fixed

  • Fix issue when MIDDLEWARE and MIDDLEWARE_CLASSES are both defined in Django 1.x apps (PR #122)

[1.3.2] 2018-08-24

Fixed

  • Fix issue detecting MIDDLEWARE_CLASSES in Django apps (#119)

[1.3.1] 2018-08-22

  • Packaging changes only

[1.3.0] 2018-08-20

Added

  • Track object allocations for every span (Objtrace module)
  • Track RSS increase during a TrackedRequest.

Fixed

  • Compatibility with old style Django middleware/settings

[1.2.3] 2018-08-15

Added

  • Alpine Linux support (Musl based distro) (#108, PR #110)

Fixed

  • Configuration not integrated into derived values (#112)
  • Flask Instruments: init_app captures app variable (#104)

[1.2.2] 2018-07-30

Fixed

  • Look up 'user_ip' context from request headers (PR #90)
  • Improved locking/sync around CoreAgentSocket (#91)
  • DO not collect backtraces on Controller or Middleware layers (#88)
  • Better Elasticsearch naming (#84)
  • Flask transactions that throw exceptions don't appear (#29)

[1.2.1] 2018-07-20

Added

  • Log configuration options to DEBUG on install
  • Add Context, Config, and install() to scout_apm.api

Fixed

  • Instrumentation API marks TrackedRequest as real request
  • Spans can ignore children (#85)

[1.2.0] 2018-07-17

Added

  • Determine Application Root
  • Deploy Detection
  • Additional Instruments:
    • PyMongo
    • UrlLib3
    • Redis
    • Elasticsearch
    • Jinja2
  • Instrumentation API

[1.1.10] 2018-07-11

  • Python 3.7 compatibility.

Fixed

  • Python 3.7 makes 'async' a reserved word.

[1.1.9] 2018-07-09

  • Remove python 2.7 from supported versions in setup.py while we work to ensure 2.7 compatibility.

Fixed

  • Typo in sqlalchemy for NPlusOneCallSet capture (#73)
  • Tuple as logging argument for tagging logger (#74)

[1.1.8] 2018-06-27

Added

  • Pyramid Support (#58)
  • Bottle Support (#64)
  • Deploy Tracking Support (#65)
  • N+1 Backtrace Capture (#62)

Fixed

  • A few fixes for 2.7 support

[1.1.7] 2018-06-12

Added

  • Custom instrumentation with a Context Manager or Decorator (#50)
  • Enhanced Test Coverage (#53)

Fixed

  • In error conditions that cause unfinished spans, don't raise exceptions (#52)
  • Several Python 2.7 Incompatibilities (#56, #57)

[1.1.6] 2018-06-05

Fixed

  • Handle Flask OPTIONS requests (#41)
  • Fix incorrect default argument to cursor.execute (#42)
  • Remove debugging message for spans that could raise an error

[1.1.5] 2018-05-25

Fixed

  • Prevent span mismatch from raising on stop_span

[1.1.4] 2018-05-24

Fixed

  • Log INFO message if SCOUT_MONITOR is false
  • Except OSError instead of ConnectionRefusedError (python 2.7 compatibility)
  • Fix CLI command module import

[1.1.3] 2018-05-21

Added

  • Basic Celery support
  • Capture Tracebacks on spans over 500ms

Fixed

  • Register as Python with APM (previously was not noted explicitly)
  • Fix CLI commands

[1.1.2] 2018-05-07

Fixed

  • Capture the current user's username correctly when using custom User model

[1.1.1] 2018-04-18

Fixed

  • Catch IOError when reading core-agent's manifest.json (#24)

[1.1.0] 2018-04-13

Added

  • Reworked Django instrumentation (#19)
  • Initial Flask Support (#18)
  • Initial SQLAlchemy Support (#18)
  • Add Request Context Support (#17)

[1.0.3] 2018-03-26

Fixed

  • Correct the default socket_path

[1.0.2] 2018-03-26

Fixed

  • Clearer archive download name

[1.0.1] 2018-03-26

Fixed

  • Fix mismatched archive download location

[1.0.0] 2018-03-26

Initial public release

Added

  • Django View, Template and SQL instrumentation
  • Periodic CPU & Memory Readings
  • Automatic management of "core agent" binary.
  • Configuration settable via ENV, or Django's settings.py