Changelog
Pending
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).
Fixed
- Fix Jinja2 asynchronous rendering instrumentation for Jinja2 2.11.0+ (PR #462).
[2.10.0] 2020-01-02
Added
- Use Python 3.8's standard library
importlib.metadata.distributions()to determine package versions, rather thanpkg_resources. The backport packageimportlib_metadatais 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
(PR #415):
- Improve SQL statement names in Timeline Traces
- Standardize on a
language_versionkey in metadata - Autoclose spans that are still running when a Request completes
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
executemanyqueries 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
wraptlibrary which is more transparent (PR #324). - Move context tracking to be async-compatble with
asgiref'sLocal(PR #349). - Add Starlette integration for Python 3.6+ (PR #349).
- Add Huey integration (PR #367).
Fixed
- Track SQL Alchemy
executemanycalls 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
RemovedInDjango20Warningfordjango.core.urlresolverson 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, **kwargsbut justconfigas 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_levelconfiguration 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_levelconfiguration option is deprecated. Please use the new namecore_agent_log_levelinstead (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_reportingto"path"(PR #268, PR #269). - Track the
urlconfon Django, for multi-domain support (PR #276). - Track request queue time from the
X-Amzn-Trace-Idheader, 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
hostnamesetting (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_MONITORis set toFalse(PR #235). - Fixed Django to stop monitoring requests when
SCOUT_MONITORis set toFalseduring 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_keyandqueuetags (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 tagparent_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 exampledjango.contrib.auth.admin.UserAdmin.changelist_view(PR #226).
Fixed
- Updated Core Agent version to 1.1.11. This fixes the
scm_subdirectoryconfiguration 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-ipheader (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-managerCLI 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-StartorX-Request-Startheader - 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
OPTIONSresponses
[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-pyas 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_permissionsconfiguration 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
MIDDLEWAREandMIDDLEWARE_CLASSESare both defined in Django 1.x apps (PR #122)
[1.3.2] 2018-08-24
Fixed
- Fix issue detecting
MIDDLEWARE_CLASSESin 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