Python Agent version 6.x

edit

6.23.0 - 2024-07-30

edit
Features
edit
  • Make published Docker images multi-platform with the addition of linux/arm64 #2080
Bug fixes
edit
  • 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

Deprecations

edit
  • Python 3.6 support will be removed in version 7.0.0 of the agent
  • The log shipping LoggingHandler will be removed in version 7.0.0 of the agent.
  • The log shipping feature in the Flask instrumentation will be removed in version 7.0.0 of the agent.
  • The log shipping feature in the Django instrumentation will be removed in version 7.0.0 of the agent.
  • The OpenTracing bridge will be removed in version 7.0.0 of the agent.
  • Celery 4.0 support is deprecated because it’s not installable anymore with a modern pip

6.22.3 - 2024-06-10

edit
Bug fixes
edit
  • Fix outcome in ASGI and Starlette apps on error status codes without an exception #2060

6.22.2 - 2024-05-20

edit
Bug fixes
edit
  • Fix CI release workflow #2046

6.22.1 - 2024-05-17

edit
Features
edit
  • Relax wrapt dependency to only exclude 1.15.0 #2005

6.22.0 - 2024-04-03

edit
Features
edit
  • Add ability to override default JSON serialization #2018

6.21.4 - 2024-03-19

edit
Bug fixes
edit
  • Fix urllib3 2.0.1+ crash with many args #2002

6.21.3 - 2024-03-08

edit
Bug fixes
edit
  • Fix artifacts download in CI workflows #1996

6.21.2 - 2024-03-07

edit
Bug fixes
edit
  • Fix artifacts upload in CI build-distribution workflow #1993

6.21.1 - 2024-03-07

edit
Bug fixes
edit
  • Fix CI release workflow #1990

6.21.0 - 2024-03-06

edit
Bug fixes
edit
  • 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

6.20.0 - 2024-01-10

edit
Features
edit
  • 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
Bug fixes
edit
  • Fix asyncpg support for 0.29+ #1935
  • Fix dbapi2 signature extraction to handle square brackets in table name #1947
Pending Deprecations
edit
  • The log shipping LoggingHandler will be removed in version 7.0.0 of the agent.

6.19.0 - 2023-10-11

edit
Features
edit
  • Add Python 3.12 support
  • Collect the configured_hostname and detected_hostname separately, and switch to FQDN for the detected_hostname. #1891
  • Improve postgres dollar-quote detection to be much faster #1905
Bug fixes
edit
  • 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
Pending Deprecations
edit
  • The log shipping feature in the Flask instrumentation will be removed in version 7.0.0 of the agent.

6.18.0 - 2023-07-25

edit
Features
edit
  • Add support for grpc aio server interceptor #1870
Bug fixes
edit
  • Fix a bug in the Elasticsearch client instrumentation which was causing loss of database context (including statement) when interacting with Elastic Cloud #1878

6.17.0 - 2023-07-03

edit

Features

edit
  • Add server_ca_cert_file option to provide custom CA certificate #1852
  • Add include_process_args option to allow users to opt-in to collecting process args #1867
Bug fixes
edit
  • Fix a bug in the GRPC instrumentation when reaching the maximum amount of spans per transaction #1861

6.16.2 - 2023-06-12

edit
Bug fixes
edit
  • Fix compatibility issue with older versions of OpenSSL in lambda runtimes #1847
  • Add latest tag to docker images #1848
  • Fix issue with redacting user:pass in URLs in Python 3.11.4 #1850

6.16.1 - 2023-06-06

edit
Bug fixes
edit
  • Fix release process for docker and the lambda layer #1845

6.16.0 - 2023-06-05

edit
Features
edit
  • 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_serializer configuration 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.environment to log correlation #1833
  • Add ecs_logging as a dependency #1840
  • Add support for synchronous psycopg3 #1841
Bug fixes
edit
  • Fix spans being dropped if they don’t have a name #1770
  • Fix AWS Lambda support when event is not a dict #1775
  • Fix deprecation warning with urllib3 2.0.0 pre-release versions #1778
  • Fix activation_method to 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

6.15.1 - 2023-03-06

edit
Bug fixes
edit
  • 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

6.15.0 - 2023-02-16

edit
Features
edit
  • Add service.agent.activation_method to the metadata #1743
Bug fixes
edit
  • Small fix to underlying Starlette logic to prevent duplicate Client objects #1735
  • Change server_url default to http://127.0.0.1:8200 to 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

6.14.0 - 2023-01-30

edit
Features
edit
  • GRPC support #1703
  • Wrapper script Flask support (experimental) #1709
Bug fixes
edit
  • 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 **kwargs config usage in our AWS Lambda integration as deprecated #1727

6.13.2 - 2022-11-17

edit
Bug fixes
edit
  • 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

6.13.1 - 2022-11-03

edit
Bug fixes
edit
  • Fix elasticsearch instrumentation for track_total_hits=False #1687

6.13.0 - 2022-10-26

edit
Features
edit
  • 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 default sanitize_field_names configuration #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
Bug fixes
edit
  • Fix Django’s manage.py check when 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

6.12.0 - 2022-09-07

edit
Features
edit
  • 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
Bug fixes
edit
  • 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.message for 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

6.11.0 - 2022-08-09

edit
Features
edit
  • Added lambda support for ELB triggers #1605

6.10.2 - 2022-08-04

edit
Bug fixes
edit
  • 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

6.10.1 - 2022-06-30

edit
Bug fixes
edit
  • Fix an issue with Kafka instrumentation and unsampled transactions #1579

6.10.0 - 2022-06-22

edit
Features
edit
  • 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_strategy setting #1564
Bug fixes
edit
  • 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

6.9.1 - 2022-03-30

edit
Bug fixes
edit
  • Fix otel_attributes-related regression with older versions of APM Server (<7.16) #1510

6.9.0 - 2022-03-29

edit
Features
edit
  • Add OpenTelemetry API bridge #1411
  • Change default for sanitize_field_names to sanitize *auth* instead of authorization #1494
  • Add span_stack_trace_min_duration to replace deprecated span_frames_min_duration #1498
  • Enable exact_match span compression by default #1504
  • Allow parent celery tasks to specify the downstream parent_span_id in celery headers #1500
Bug fixes
edit
  • Fix Sanic integration to properly respect the capture_body config #1485
  • Lambda fixes to align with the cross-agent spec #1489
  • Lambda fix for custom service_name #1493
  • Change default for stack_trace_limit from 500 to 50 #1492
  • Switch all duration handling to use datetime.timedelta objects #1488

6.8.1 - 2022-03-09

edit
Bug fixes
edit
  • Fix exit_span_min_duration and disable by default #1483

6.8.0 - 2022-02-22

edit
Features
edit
  • 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.
Bug fixes
edit
  • fix span compression for redis, mongodb, cassandra and memcached #1444
  • fix recording of status_code for starlette #1466
  • fix aioredis span context handling #1462

6.7.2 - 2021-12-07

edit
Bug fixes
edit
  • fix AttributeError in sync instrumentation of httpx #1423
  • add setting to disable span compression, default to disabled #1429

6.7.1 - 2021-11-29

edit
Bug fixes
edit
  • fix an issue with Sanic exception tracking #1414
  • asyncpg: Limit SQL queries in context data to 10000 characters #1416

6.7.0 - 2021-11-17

edit
Features
edit
  • Add support for Sanic framework #1390
Bug fixes
edit
  • fix compatibility issues with httpx 0.21 #1403
  • fix span_compression_exact_match_max_duration default value #1407

6.6.3 - 2021-11-15

edit
Bug fixes
edit
  • fix an issue with metrics_sets configuration referencing the TransactionMetricSet removed in 6.6.2 #1397

6.6.2 - 2021-11-10

edit
Bug fixes
edit
  • 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-Agent header to the new spec #1378
  • Improve status_code handling in AWS Lambda integration #1382
  • Fix aiohttp exception handling to allow for non-500 responses including HTTPOk #1384
  • Force transaction names to strings #1389
Other
edit
  • Remove unused http.request.socket.encrypted context field #1332
  • Remove unused transaction metrics (APM Server handles these metrics instead) #1388

6.6.1 - 2021-11-02

edit
Bug fixes
edit
  • Fix some context fields and metadata handling in AWS Lambda support #1368

6.6.0 - 2021-10-18

edit
Features
edit
  • 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
Bug fixes
edit
  • Ensure that Prometheus histograms are encoded correctly for APM Server #1354
  • Remove problematic (and duplicate) event.dataset from logging integrations #1365
  • Fix for memcache instrumentation when configured with a unix socket #1357

6.5.0 - 2021-10-04

edit
Features
edit
  • Add instrumentation for Azure Storage (blob/table/fileshare) and Azure Queue #1316
Bug fixes
edit
  • 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

6.4.0 - 2021-08-31

edit
Features
edit
  • Rename the experimental log_ecs_formatting config to log_ecs_reformatting #1300
  • Add support for Prometheus histograms #1165
Bug fixes
edit
  • 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

6.3.3 - 2021-07-14

edit
Bug fixes
edit
  • ensure that the elasticsearch instrumentation handles DroppedSpans correctly #1190

6.3.2 - 2021-07-07

edit
Bug fixes
edit
  • Fix handling of non-http scopes in Starlette/FastAPI middleware #1187

6.3.1 - 2021/07/07

edit
Bug fixes
edit
  • Fix issue with Starlette/FastAPI hanging on startup #1185

6.3.0 - 2021/07/06

edit
Features
edit
  • Add additional context information about elasticsearch client requests #1108
  • Add use_certifi config option to allow users to disable certifi #1163
Bug fixes
edit
  • Fix for Starlette 0.15.0 error collection #1174
  • Fix for Starlette static files #1137

6.2.3 - 2021/06/28

edit
Bug fixes
edit
  • 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

6.2.2 - 2021/06/07

edit
Bug fixes
edit
  • Fix an attribute access bug introduced in 6.2.0 #1149

6.2.1 - 2021/06/03

edit
Bug fixes
edit
  • catch and log exceptions in interval timer threads #1145

6.2.0 - 2021/05/31

edit
Features
edit
  • 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
Bug fixes
edit
  • 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

6.1.3 - 2021/04/28

edit
Bug fixes
edit
  • 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

6.1.2 - 2021/04/14

edit
Bug fixes
edit
  • fixed issue with empty transaction name for the root route with Django #1095
  • fixed on-the-fly initialisation of Flask apps #1099

v6.1.1 - 2021/04/08

edit
Bug fixes
edit
  • fixed a validation issue with the newly introduced instrumentation for S3, SNS and DynamoDB #1090

v6.1.0 - 2021/03/31

edit
Features
edit
  • Add global access to Client singleton object at elasticapm.get_client() #1043
  • Add log_ecs_formatting config 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
Bug fixes
edit
  • Fix for potential capture_body: error hang 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

v6.0.0 - 2021/02/01

edit
Breaking changes
edit
  • Python 2.7 and 3.5 support has been deprecated. The Python agent now requires Python 3.6+ #1021
  • No longer collecting body for elasticsearch-py update and delete_by_query #1013
  • Align sanitize_field_names config with the cross-agent spec. If you are using a non-default sanitize_field_names, surrounding each of your entries with stars (e.g. *secret*) will retain the old behavior. #982
  • Remove credit card sanitization for field values. This improves performance, and the security value of this check was dubious anyway. #982
  • Remove HTTP querystring sanitization. This improves performance, and is meant to standardize behavior across the agents, as defined in https://github.com/elastic/apm/pull/334. #982
  • Remove elasticapm.tag() (deprecated since 5.0.0) #1034
Bug fixes
edit
  • Fix for GraphQL span spamming from scalar fields with required flag #1015