- fixed an issue with detecting names of wrapped functions that are partials (#294)
- added sanitization for
Set-Cookie
response headers (#264) - added instrumentation for the non-standard
Connection.execute()
method for SQLite3 (#271) - added "authorization" to list of sensitive keywords, to ensure that "Authorization" HTTP headers are properly sanitized (#275)
- taught the Logbook handler how to handle the
stack=False
option (#278) - fixed a race condition with managing the timer-send thread (#279)
- adapted "black" code formatter for this repository (#262)
- BREAKING: dropped support for Python 3.3 (#242)
- BREAKING: changed order of precedence when evaluating configuration (#255, #261)
- BREAKING: changed default value of
span_frames_min_duration
setting from-1
(always collect) to5
(only collect for spans longer than 5 ms) (#243) - added instrumentation for pymssql (#241)
- added instrumentation for pyodbc (#238)
- fixed an issue with Django Channels (#232, #233)
- introduced consistent logger name scheme for all elasticapm internal log messages (#212)
- added instrumentation of cassandra-driver (#205)
- added instrumentation of elasticsearch-py (#191)
- added Flask 1.0 to the test matrix (#207)
- fixed an issue with our minimalistic SQL parser and "fully qualified" table names (#206)
- fixed issue with spans in Django’s
StreamingHTTPResponse
not being captured (#201, #202) - fixed issue with spans with Flask’s streaming response not being captured (#201, #202)
NOTE: This will be the last release with support for Python 3.3.
- fixed bug in Django management command that would be triggered on Django 1.10 or 1.11 while using the
MIDDLEWARE_CLASSES
setting (#186, #187) - fix an encoding issue with log messages that are hit in rare cases (#188, #189)
- made skipping of initial
elasticapm
frames for span stack traces more generic (#167) - added
context.process.ppid
field (supported in apm-server 6.3+) (#168) - added option to disable stack frame collection for very short spans (#142)
- several bug fixes:
- fix an issue in boto3 instrumentation with nonstandard endpoint URLs (#178)
- fix bug with OPTIONS requests and body capturing (#174)
- fix issue when message has
%
character, but no params (#175)
- fixed compatibility issue with aiohttp 3.0 (#157)
- Added truncation for fields that have a
maxLength
in the JSON Schema (#159)
- moved the library-frame detection from a processor to the stacktrace collection (#113).
- added settings to enable/disable source code collection and local variables collection for errors and transactions (#117)
- added
service.environment
to provide an environment name (e.g. "production", "staging") (#123) - added
transaction.id
to errors to better correlate errors with transactions (#122) - added
transaction_sample_rate
to define a rate with which transactions are sampled (#116) - added
error.handled
to indicate if an exception was handled or not (#124). - added
transaction_max_spans
setting to limit the amount of spans that are recorded per transaction (#127) - added configuration options to limit captured local variables to a certain length (#130)
- added options for configuring the amount of context lines that are captured with each frame (#136)
- added support for tracing queries formatted as
psycopg2.sql.SQL
objects (#148) - switched to
time.perf_counter
as timing function on Python 3 (#138) - added option to disable capturing of request body (#151)
- BREAKING: Several settings and APIs have been renamed (#111, #119, #143):
- The decorator for custom instrumentation,
elasticapm.trace
, is nowelasticapm.capture_span
- The setting
traces_send_frequency
has been renamed toflush_interval
. The name of the analogous environment variable changed fromELASTIC_APM_TRACES_SEND_FREQ
toELASTIC_APM_FLUSH_INTERVAL
- The
app_name
setting has been renamed toservice_name
. The name of the analogous environment variable changed fromELASTIC_APM_APP_NAME
toELASTIC_APM_SERVICE_NAME
. app_name
arguments to API calls in the whole code base changed toservice_name
.- The
app_version
setting has been renamed toservice_version
. The name of the analogous environment variable changed fromELASTIC_APM_APP_VERSION
toELASTIC_APM_SERVICE_VERSION
. context.request.url.raw
has been renamed tocontext.request.url.full
(#121)
- The decorator for custom instrumentation,
- BREAKING: added
elasticapm.set_custom_context
in favor of the more genericset_custom_data
function (#133) - BREAKING:
include_patterns
andexclude_patterns
now use shell globs instead of regular expressions, and are matched against the full path file path of the module, not against the module name (#137) - BREAKING: renamed several configuration options to align better with other language agents (#145):
disable_instrumentation
becameinstrument
and inverted its meaningmax_event_queue_length
becamemax_queue_size
timeout
becameserver_timeout
- added
max-event-queue-length
setting. (#67) - changed name that the agent reports itself with to the APM server from
elasticapm-python
topython
. This aligns the Python agent with other languages. (#104) - changed Celery integration to store the task state (e.g.
SUCCESS
orFAILURE
) intransaction.result
(#100) - added setting to disable SSL certificate verification (#108)
- BREAKING: renamed
server
configuration variable toserver_url
to better align with other language agents (#105) - BREAKING: removed the old and unused urllib2-based HTTP transport, and renamed the urllib3 transport (#107)
- BREAKING: several API changes to
capture_exception
,capture_message
, and added documentation for these and other APIs (#112)
- added a background thread to process the transactions queue every 60 seconds (configurable) (#68)
- adapted trace context for SQL traces to new API (#77)
- ensured that transaction data is also passed through processors (#84)
- added
uninstrument
function to reverse instrumentation, and exposed bothinstrument
anduninstrument
as public API in theelasticapm
namespace (#90) - added normalization of HTTP status codes into classes for the
transaction.result
field. A HTTP status of200
will be turned intoHTTP 2xx
. The unchanged status code is still available incontext.response.status_code
. (#85)
- added request context information for Flask (#58)
- added response context information for Flask (#65)
- BREAKING: changed the
SERVERS
list setting to a singleSERVER
string setting. With this change, we now only support sending events to a single server (#59) - BREAKING: removed root trace. Due to historical reason, we used to create a "root trace" which was equivalent to the transaction. This is no longer necessary. #61
- unified configuration across supported frameworks (#33)
- added in-app frame detection (#36)
- added tagging functionality (#28)
- preliminary support for Django 2.0 (#26)
- initial set of documentation
First release of the Python agent for Elastic APM