| navigation_title | Elastic APM Python Agent | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| mapped_pages | ||||||||||
| applies_to |
|
Review the changes, fixes, and more in each version of Elastic APM Python Agent.
To check for security updates, go to Security announcements for the Elastic stack.
% Release notes includes only features, enhancements, and fixes. Add breaking changes, deprecations, and known issues to the applicable release notes sections.
% ## version.next [elastic-apm-python-agent-versionext-release-notes] % Release date: Month day, year
% ### Features and enhancements [elastic-apm-python-agent-versionext-features-enhancements]
% ### Fixes [elastic-apm-python-agent-versionext-fixes]
Release date: December 23, 2025
- Introduce
ELASTIC_APM_SKIP_SERVER_INFOto reduce overhead on serverless with APM server 8.7.1+ #2516 - List all exported symbols in elasticapm module
__all__#2504
- Handle Tornado 6.5.3
HttpHeadersinoperator behavior change #2512
Release date: November 21, 2025
- Fix handling of psycopg ServerCursor and AsyncServerCursor instrumentation #2489
- Fix contrib/opentelemetry
set_statusto match base signature #2457
Release date: August 12, 2025
- Add support for recent sanic versions #2190, #2194
- Make server certificate verification mandatory in fips mode #2227
- Add support Python 3.13 #2216
- Add support for azure-data-tables package for azure instrumentation #2187
- Add span links from SNS messages #2363
- Fix psycopg2 cursor execute and executemany signatures #2331
- Fix psycopg cursor execute and executemany signatures #2332
- Fix asgi middleware distributed tracing #2334
- Fix typing of start in Span / capture_span to float #2335
- Fix azure instrumentation client_class and metrics sets invocation #2337
- Fix mysql_connector instrumentation connection retrieval #2344
- Remove spurious Django QuerySet evaluation in case of database errors #2158
Release date: July 30, 2024
- Make published Docker images multi-platform with the addition of linux/arm64 #2080
- Fix handling consumer iteration if transaction not sampled in kafka instrumentation #2075
- Fix race condition with urllib3 at shutdown #2085
- Fix compatibility with setuptools>=72 that removed test command #2090
Release date: June 10, 2024
- Fix outcome in ASGI and Starlette apps on error status codes without an exception #2060
Release date: May 20, 2024
- Fix CI release workflow #2046
Release date: May 17, 2024
- Relax wrapt dependency to only exclude 1.15.0 #2005
Release date: April 3, 2024
- Add ability to override default JSON serialization #2018
Release date: March 19, 2024
- Fix urllib3 2.0.1+ crash with many args #2002
Release date: March 8, 2024
- Fix artifacts download in CI workflows #1996
Release date: March 7, 2024
- Fix artifacts upload in CI build-distribution workflow #1993
Release date: March 7, 2024
- Fix CI release workflow #1990
Release date: March 6, 2024
- Fix starlette middleware setup without client argument #1952
- Fix blocking of gRPC stream-to-stream requests #1967
- Always take into account body reading time for starlette requests #1970
- Make urllib3 transport tests more robust against local env #1969
- Clarify starlette integration documentation #1956
- Make dbapi2 query scanning for dollar quotes a bit more correct #1976
- Normalize headers in AWS Lambda integration on API Gateway v1 requests #1982
Release date: January 10, 2024
- Async support for dbapi2 (starting with psycopg) #1944
- Add object name to procedure call spans in dbapi2 #1938
- Add support for python 3.10 and 3.11 lambda runtimes
- Fix asyncpg support for 0.29+ #1935
- Fix dbapi2 signature extraction to handle square brackets in table name #1947
Release date: October 11, 2023
- Add Python 3.12 support
- Collect the
configured_hostnameanddetected_hostnameseparately, and switch to FQDN for thedetected_hostname. #1891 - Improve postgres dollar-quote detection to be much faster #1905
- Fix url argument fetching in aiohttp_client instrumentation #1890
- Fix a bug in the AWS Lambda instrumentation when
event["headers"] is None#1907 - Fix a bug in AWS Lambda where metadata could be incomplete, causing validation errors with the APM Server #1914
- Fix a bug in AWS Lambda where sending the partial transaction would be recorded as an extra span #1914
Release date: July 25, 2023
- Add support for grpc aio server interceptor #1870
- Fix a bug in the Elasticsearch client instrumentation which was causing loss of database context (including statement) when interacting with Elastic Cloud #1878
Release date: July 3, 2023
- Add
server_ca_cert_fileoption to provide custom CA certificate #1852 - Add
include_process_argsoption to allow users to opt-in to collecting process args #1867
- Fix a bug in the GRPC instrumentation when reaching the maximum amount of spans per transaction #1861
Release date: June 12, 2023
- Fix compatibility issue with older versions of OpenSSL in lambda runtimes #1847
- Add
latesttag to docker images #1848 - Fix issue with redacting
user:passin URLs in Python 3.11.4 #1850
Release date: June 6, 2023
- Fix release process for docker and the lambda layer #1845
Release date: June 5, 2023
- Add lambda layer for instrumenting AWS Lambda functions #1826
- Implement instrumentation of Azure Functions #1766
- Add support for Django to wrapper script #1780
- Add support for Starlette to wrapper script #1830
- Add
transport_json_serializerconfiguration option #1777 - Add S3 bucket and key name to OTel attributes #1790
- Implement partial transaction support in AWS lambda #1784
- Add instrumentation for redis.asyncio #1807
- Add support for urllib3 v2.0.1+ #1822
- Add
service.environmentto log correlation #1833 - Add
ecs_loggingas a dependency #1840 - Add support for synchronous psycopg3 #1841
- Fix spans being dropped if they don’t have a name #1770
- Fix AWS Lambda support when
eventis not a dict #1775 - Fix deprecation warning with urllib3 2.0.0 pre-release versions #1778
- Fix
activation_methodto only send to APM server 8.7.1+ #1787 - Fix span.context.destination.service.resource for S3 spans to have an "s3/" prefix. #1783
Note: While this is considered a bugfix, it can potentially be a breaking change in the Kibana APM app: It can break the history of the S3-Spans / metrics for users relying on context.destination.service.resource. If users happen to run agents both with and without this fix (for same or different languages), the same S3-buckets can appear twice in the service map (with and without s3-prefix).
- Fix instrumentation to not bubble up exceptions during instrumentation #1791
- Fix HTTP transport to not print useless and confusing stack trace #1809
Release date: March 6, 2023
- Fix issue with botocore instrumentation creating spans with an incorrect
service.name#1765 - Fix a bug in the GRPC instrumentation when the agent is disabled or not recording #1761
Release date: February 16, 2023
- Add
service.agent.activation_methodto the metadata #1743
- Small fix to underlying Starlette logic to prevent duplicate Client objects #1735
- Change
server_urldefault tohttp://127.0.0.1:8200to avoid ipv6 ambiguity #1744 - Fix an issue in GRPC instrumentation with unsampled transactions #1740
- Fix error in async Elasticsearch instrumentation when spans are dropped #1758
Release date: January 30, 2023
- Fix an async issue with long elasticsearch queries #1725
- Fix a minor inconsistency with the W3C tracestate spec #1728
- Fix a cold start performance issue with our AWS Lambda integration #1727
- Mark
**kwargsconfig usage in our AWS Lambda integration as deprecated #1727
Release date: November 17, 2022
- Fix error in Elasticsearch instrumentation when spans are dropped #1690
- Lower log level for errors in APM Server version fetching #1692
- Fix for missing parent.id when logging from a DroppedSpan under a leaf span #1695
Release date: November 3, 2022
- Fix elasticsearch instrumentation for track_total_hits=False #1687
Release date: October 26, 2022
- Add support for Python 3.11
- Add backend granularity data to SQL backends as well as Cassandra and pymongo #1585, #1639
- Add support for instrumenting the Elasticsearch 8 Python client #1642
- Add
*principal*to defaultsanitize_field_namesconfiguration #1664 - Add docs and better support for custom metrics, including in AWS Lambda #1643
- Add support for capturing span links from AWS SQS in AWS Lambda #1662
- Fix Django’s
manage.py checkwhen agent is disabled #1632 - Fix an issue with long body truncation for Starlette #1635
- Fix an issue with transaction outcomes in Flask for uncaught exceptions #1637
- Fix Starlette instrumentation to make sure transaction information is still present during exception handling #1674
Release date: September 7, 2022
- Add redis query to context data for redis instrumentation #1406
- Add AWS request ID to all botocore spans (at
span.context.http.request.id) #1625
- Differentiate Lambda URLs from API Gateway in AWS Lambda integration #1609
- Restrict the size of Django request bodies to prevent APM Server rejection #1610
- Restrict length of
exception.messagefor exceptions captured by the agent #1619 - Restrict length of Starlette request bodies #1549
- Fix error when using elasticsearch(sniff_on_start=True) #1618
- Improve handling of ignored URLs and capture_body=off for Starlette #1549
- Fix possible error in the transport flush for Lambda functions #1628
Release date: August 9, 2022
- Added lambda support for ELB triggers #1605
Release date: August 9, 2022
- Fixed an issue with non-integer ports in Django #1590
- Fixed an issue with non-integer ports in Redis #1591
- Fixed a performance issue for local variable shortening via
varmap()#1593 - Fixed
elasticapm.label()when a Client object is not available #1596
Release date: June 30, 2022
- Fix an issue with Kafka instrumentation and unsampled transactions #1579
Release date: June 22, 2022
- Add instrumentation for
aiobotocore#1520 - Add instrumentation for
kafka-python#1555 - Add API for span links, and implement span link support for OpenTelemetry bridge #1562
- Add span links to SQS ReceiveMessage call #1575
- Add specific instrumentation for SQS delete/batch-delete #1567
- Add
trace_continuation_strategysetting #1564
- Fix return for
opentelemetry.Span.is_recording()#1530 - Fix error logging for bad SERVICE_NAME config #1546
- Do not instrument old versions of Tornado > 6.0 due to incompatibility #1566
- Fix transaction names for class based views in Django 4.0+ #1571
- Fix a problem with our logging handler failing to report internal errors in its emitter #1568
Release date: March 30, 2022
- Fix
otel_attributes-related regression with older versions of APM Server (<7.16) #1510
Release date: March 29, 2022
- Add OpenTelemetry API bridge #1411
- Change default for
sanitize_field_namesto sanitize*auth*instead ofauthorization#1494 - Add
span_stack_trace_min_durationto replace deprecatedspan_frames_min_duration#1498 - Enable exact_match span compression by default #1504
- Allow parent celery tasks to specify the downstream
parent_span_idin celery headers #1500
- Fix Sanic integration to properly respect the
capture_bodyconfig #1485 - Lambda fixes to align with the cross-agent spec #1489
- Lambda fix for custom
service_name#1493 - Change default for
stack_trace_limitfrom 500 to 50 #1492 - Switch all duration handling to use
datetime.timedeltaobjects #1488
Release date: March 9, 2022
- Fix
exit_span_min_durationand disable by default #1483
Release date: February 22, 2022
- use "unknown-python-service" as default service name if no service name is configured #1438
- add transaction name to error objects #1441
- don’t send unsampled transactions to APM Server 8.0+ #1442
- implement snapshotting of certain configuration during transaction lifetime #1431
- propagate traceparent IDs via Celery #1371
- removed Python 2 compatibility shims #1463
Note: Python 2 support was already removed with version 6.0 of the agent, this now removes unused compatibilit shims.
- fix span compression for redis, mongodb, cassandra and memcached #1444
- fix recording of status_code for starlette #1466
- fix aioredis span context handling #1462
Release date: December 7, 2021
- fix AttributeError in sync instrumentation of httpx #1423
- add setting to disable span compression, default to disabled #1429
Release date: November 29, 2021
- fix an issue with Sanic exception tracking #1414
- asyncpg: Limit SQL queries in context data to 10000 characters #1416
Release date: November 17, 2021
- Add support for Sanic framework #1390
- fix compatibility issues with httpx 0.21 #1403
- fix
span_compression_exact_match_max_durationdefault value #1407
Release date: November 15, 2021
- fix an issue with
metrics_setsconfiguration referencing theTransactionMetricSetremoved in 6.6.2 #1397
Release date: November 10, 2021
- Fix an issue where compressed spans would count against
transaction_max_spans#1377 - Make sure HTTP connections are not re-used after a process fork #1374
- Fix an issue with psycopg2 instrumentation when multiple hosts are defined #1386
- Update the
User-Agentheader to the new spec #1378 - Improve status_code handling in AWS Lambda integration #1382
- Fix
aiohttpexception handling to allow for non-500 responses includingHTTPOk#1384 - Force transaction names to strings #1389
- Remove unused
http.request.socket.encryptedcontext field #1332 - Remove unused transaction metrics (APM Server handles these metrics instead) #1388
Release date: November 2, 2021
- Fix some context fields and metadata handling in AWS Lambda support #1368
Release date: October 18, 2021
- Add experimental support for AWS lambda instrumentation #1193
- Add support for span compression #1321
- Auto-infer destination resources for easier instrumentation of new resources #1359
- Add support for dropped span statistics #1327
- Ensure that Prometheus histograms are encoded correctly for APM Server #1354
- Remove problematic (and duplicate)
event.datasetfrom logging integrations #1365 - Fix for memcache instrumentation when configured with a unix socket #1357
Release date: October 4, 2021
- Add instrumentation for Azure Storage (blob/table/fileshare) and Azure Queue #1316
- Improve span coverage for
asyncpg#1328 - aiohttp: Correctly pass custom client to tracing middleware #1345
- Fixed an issue with httpx instrumentation #1337
- Fixed an issue with Django 4.0 removing a private method #1347
Release date: August 31, 2021
- Rename the experimental
log_ecs_formattingconfig tolog_ecs_reformatting#1300 - Add support for Prometheus histograms #1165
- Fixed cookie sanitization when Cookie is capitalized #1301
- Fix a bug with exception capturing for bad UUIDs #1304
- Fix potential errors in json serialization #1203
- Fix an issue with certain aioredis commands #1308
Release date: July 14, 2021
- ensure that the elasticsearch instrumentation handles DroppedSpans correctly #1190
Release date: July 7, 2021
- Fix handling of non-http scopes in Starlette/FastAPI middleware #1187
Release date: July 7, 2021
- Fix issue with Starlette/FastAPI hanging on startup #1185
Release date: July 6, 2021
- Add additional context information about elasticsearch client requests #1108
- Add
use_certificonfig option to allow users to disablecertifi#1163
Release date: June 28, 2021
- suppress the default_app_config attribute in Django 3.2+ #1155
- bump log level for multiple set_client calls to WARNING #1164
- fix issue with adding disttracing to SQS messages when dropping spans #1170
Release date: June 7, 2021
- Fix an attribute access bug introduced in 6.2.0 #1149
Release date: June 3, 2021
- catch and log exceptions in interval timer threads #1145
Release date: May 31, 2021
- Added support for aioredis 1.x #2526
- Added support for aiomysql #1107
- Added Redis pub/sub instrumentation #1129
- Added specific instrumentation for AWS SQS #1123
- ensure metrics are flushed before agent shutdown #1139
- added safeguard for exceptions in processors #1138
- ensure sockets are closed which were opened for cloud environment detection #1134
Release date: April 28, 2021
- added destination information to asyncpg instrumentation #1115
- fixed issue with collecting request meta data with Django REST Framework #1117
- fixed httpx instrumentation for newly released httpx 0.18.0 #1118
Release date: April 14, 2021
- fixed issue with empty transaction name for the root route with Django #1095
- fixed on-the-fly initialisation of Flask apps #1099
Release date: April 8, 2021
- fixed a validation issue with the newly introduced instrumentation for S3, SNS and DynamoDB #1090
Release date: March 31, 2021
- Add global access to Client singleton object at
elasticapm.get_client()#1043 - Add
log_ecs_formattingconfig option #1058 #1063 - Add instrumentation for httplib2 #1031
- Add better instrumentation for some AWS services (S3, SNS, DynamoDB) #1054
- Added beta support for collecting metrics from prometheus_client #1083
- Fix for potential
capture_body: errorhang in Starlette/FastAPI #1038 - Fix a rare error around processing stack frames #1012
- Fix for Starlette/FastAPI to correctly capture request bodies as strings #1041
- Fix transaction names for Starlette Mount routes #1037
- Fix for elastic excepthook arguments #1050
- Fix issue with remote configuration when resetting config values #1068
- Use a label for the elasticapm Django app that is compatible with Django 3.2 validation #1064
- Fix an issue with undefined routes in Starlette #1076
Release date: February 1, 2021
- Fix for GraphQL span spamming from scalar fields with required flag #1015