Aiohttp Server supportedit
Getting Elastic APM set up for your Aiohttp Server project is easy, and there are various ways you can tweak it to fit to your needs.
Installationedit
Install the Elastic APM agent using pip:
$ pip install elastic-apm
or add elastic-apm
to your project’s requirements.txt
file.
Setupedit
To set up the agent, you need to initialize it with appropriate settings.
The settings are configured either via environment variables, the application’s settings, or as initialization arguments.
You can find a list of all available settings in the Configuration page.
To initialize the agent for your application using environment variables:
from aiohttp import web from elasticapm.contrib.aiohttp import ElasticAPM app = web.Application() apm = ElasticAPM(app)
To configure the agent using ELASTIC_APM
in your application’s settings:
from aiohttp import web from elasticapm.contrib.aiohttp import ElasticAPM app = web.Application() app['ELASTIC_APM'] = { 'SERVICE_NAME': '<SERVICE-NAME>', 'SECRET_TOKEN': '<SECRET-TOKEN>', } apm = ElasticAPM(app)
Usageedit
Once you have configured the agent, it will automatically track transactions and capture uncaught exceptions within aiohttp.
Capture an arbitrary exception by calling capture_exception
:
try: 1 / 0 except ZeroDivisionError: apm.client.capture_exception()
Log a generic message with capture_message
:
apm.client.capture_message('hello, world!')
Performance metricsedit
If you’ve followed the instructions above, the agent has already installed our middleware. This will measure response times, as well as detailed performance data for all supported technologies.
due to the fact that asyncio
drivers are usually separate from their synchronous counterparts,
specific instrumentation is needed for all drivers.
The support for asynchronous drivers is currently quite limited.
Ignoring specific routesedit
You can use the TRANSACTIONS_IGNORE_PATTERNS
configuration option to ignore specific routes.
The list given should be a list of regular expressions which are matched against the transaction name:
app['ELASTIC_APM'] = { # ... 'TRANSACTIONS_IGNORE_PATTERNS': ['^OPTIONS ', '/api/'] # ... }
This would ignore any requests using the OPTIONS
method
and any requests containing /api/
.
Supported aiohttp and Python versionsedit
A list of supported aiohttp and Python versions can be found on our Supported Technologies page.
Elastic APM only supports asyncio
when using Python 3.7+