Aiohttp 服务器支持

编辑

为您的 Aiohttp 服务器项目设置 Elastic APM 非常简单,您可以通过多种方式对其进行调整以满足您的需求。

安装

编辑

使用 pip 安装 Elastic APM agent

$ pip install elastic-apm

或将 elastic-apm 添加到项目的 requirements.txt 文件中。

设置

编辑

要设置 agent,您需要使用适当的设置对其进行初始化。

设置可以通过环境变量、应用程序设置或初始化参数进行配置。

您可以在配置页面中找到所有可用设置的列表。

要使用环境变量为您的应用程序初始化 agent

from aiohttp import web

from elasticapm.contrib.aiohttp import ElasticAPM

app = web.Application()

apm = ElasticAPM(app)

要使用应用程序设置中的 ELASTIC_APM 配置 agent

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)

使用

编辑

配置 agent 后,它将自动跟踪事务并在 aiohttp 中捕获未捕获的异常。

通过调用 capture_exception 捕获任意异常

try:
    1 / 0
except ZeroDivisionError:
    apm.client.capture_exception()

使用 capture_message 记录通用消息

apm.client.capture_message('hello, world!')

性能指标

编辑

如果您已按照上述说明操作,则 agent 已安装我们的中间件。这将测量响应时间,以及所有受支持技术的详细性能数据。

由于 asyncio 驱动程序通常与其同步对应程序分开,因此所有驱动程序都需要特定的检测。目前对异步驱动程序的支持非常有限。

忽略特定路由
编辑

您可以使用 TRANSACTIONS_IGNORE_PATTERNS 配置选项来忽略特定路由。给出的列表应为与事务名称匹配的正则表达式列表。

app['ELASTIC_APM'] = {
    # ...
    'TRANSACTIONS_IGNORE_PATTERNS': ['^OPTIONS ', '/api/']
    # ...
}

这将忽略使用 OPTIONS 方法的任何请求以及包含 /api/ 的任何请求。

支持的 aiohttp 和 Python 版本

编辑

支持的 aiohttpPython 版本列表可以在我们的 支持的技术 页面上找到。

Elastic APM 仅在使用 Python 3.7+ 时支持 asyncio