Supported Technologies
editSupported Technologies
editPython
editThe following Python versions are supported:
- 2.7
- 3.4
- 3.5
- 3.6
- 3.7
Python 2.7 will reach End of Life on January 1, 2020. The Elastic APM agent will stop supporting Python 2.7 in the first major version after that date.
Django
editWe support these Django versions:
- 1.11
- 2.0
- 2.1
- 2.2
For upcoming Django versions, we generally aim to ensure compatibility starting with the first Release Candidate.
Flask
editWe support these Flask versions:
- 0.10
- 0.11
- 0.12
- 1.0
Automatic Instrumentation
editThe Python APM agent comes with automatic instrumentation of various 3rd party modules and standard library modules.
Databases
editElasticsearch
editInstrumented methods:
-
elasticsearch.connection.http_urllib3.Urllib3HttpConnection.perform_request
-
elasticsearch.connection.http_requests.RequestsHttpConnection.perform_request
Additionally, the instrumentation wraps the following methods of the Elasticsearch
client class:
-
elasticsearch.client.Elasticsearch.delete_by_query
-
elasticsearch.client.Elasticsearch.search
-
elasticsearch.client.Elasticsearch.count
-
elasticsearch.client.Elasticsearch.update
Collected trace data:
- the query string (if available)
-
the
query
element from the request body (if available)
SQLite
editInstrumented methods:
-
sqlite3.connect
-
sqlite3.dbapi2.connect
-
pysqlite2.dbapi2.connect
The instrumented connect
method returns a wrapped connection/cursor which instruments the actual Cursor.execute
calls.
Collected trace data:
- parametrized SQL query
MySQL
editLibrary: MySQLdb
Instrumented methods:
-
MySQLdb.connect
The instrumented connect
method returns a wrapped connection/cursor which instruments the actual Cursor.execute
calls.
Collected trace data:
- parametrized SQL query
PostgreSQL
editLibrary: psycopg2
, psycopg2-binary
(>=2.5,<2.8
)
Instrumented methods:
-
psycopg2.connect
The instrumented connect
method returns a wrapped connection/cursor which instruments the actual Cursor.execute
calls.
Collected trace data:
- parametrized SQL query
PyODBC
editLibrary: pyodbc
, (>=4.0
)
Instrumented methods:
-
pyodbc.connect
The instrumented connect
method returns a wrapped connection/cursor which instruments the actual Cursor.execute
calls.
Collected trace data:
- parametrized SQL query
MS-SQL
editLibrary: pymssql
, (>=2.1.0
)
Instrumented methods:
-
pymssql.connect
The instrumented connect
method returns a wrapped connection/cursor which instruments the actual Cursor.execute
calls.
Collected trace data:
- parametrized SQL query
MongoDB
editLibrary: pymongo
, >=2.9,<3.8
Instrumented methods:
-
pymongo.collection.Collection.aggregate
-
pymongo.collection.Collection.bulk_write
-
pymongo.collection.Collection.count
-
pymongo.collection.Collection.create_index
-
pymongo.collection.Collection.create_indexes
-
pymongo.collection.Collection.delete_many
-
pymongo.collection.Collection.delete_one
-
pymongo.collection.Collection.distinct
-
pymongo.collection.Collection.drop
-
pymongo.collection.Collection.drop_index
-
pymongo.collection.Collection.drop_indexes
-
pymongo.collection.Collection.ensure_index
-
pymongo.collection.Collection.find_and_modify
-
pymongo.collection.Collection.find_one
-
pymongo.collection.Collection.find_one_and_delete
-
pymongo.collection.Collection.find_one_and_replace
-
pymongo.collection.Collection.find_one_and_update
-
pymongo.collection.Collection.group
-
pymongo.collection.Collection.inline_map_reduce
-
pymongo.collection.Collection.insert
-
pymongo.collection.Collection.insert_many
-
pymongo.collection.Collection.insert_one
-
pymongo.collection.Collection.map_reduce
-
pymongo.collection.Collection.reindex
-
pymongo.collection.Collection.remove
-
pymongo.collection.Collection.rename
-
pymongo.collection.Collection.replace_one
-
pymongo.collection.Collection.save
-
pymongo.collection.Collection.update
-
pymongo.collection.Collection.update_many
-
pymongo.collection.Collection.update_one
Collected trace data:
- database name
- method name
Redis
editLibrary: redis
(>=2.8,<3.2.0
)
Instrumented methods:
-
redis.client.Redis.execute_command
-
redis.client.Pipeline.execute
Collected trace data:
- Redis command name
Cassandra
editLibrary: cassandra-driver
(>=3.4,<4.0
)
Instrumented methods:
-
cassandra.cluster.Session.execute
-
cassandra.cluster.Cluster.connect
Collected trace data:
- CQL query
External HTTP requests
editurllib3
editLibrary: urllib3
Instrumented methods:
-
urllib3.connectionpool.HTTPConnectionPool.urlopen
Additionally, we instrumented vendored instances of urllib3 in the following libraries:
-
requests
-
botocore
Both libraries have "unvendored" urllib3 in more recent versions, we recommend to use the newest versions.
Collected trace data:
- HTTP method
- requested URL
requests
editInstrumented methods:
-
requests.sessions.Session.send
Collected trace data:
- HTTP method
- requested URL
Services
editAWS Boto3 / Botocore
editLibrary: boto3
(>=1.0
)
Instrumented methods:
-
botocore.client.BaseClient._make_api_call
Collected trace data:
-
AWS region (e.g.
eu-central-1
) -
AWS service name (e.g.
s3
) -
operation name (e.g.
ListBuckets
)
Template Engines
editDjango Template Language
editLibrary: Django
(see Django for supported versions)
Instrumented methods:
-
django.template.Template.render
Collected trace data:
- template name
Jinja2
editLibrary: jinja2
Instrumented methods:
-
jinja2.Template.render
Collected trace data:
- template name