监控 Azure Functions编辑

先决条件编辑

您需要一个 APM 服务器,您可以将 APM 数据发送到该服务器。如果您尚未设置,请按照 APM 快速入门 进行操作。为了获得最佳性能,我们建议在与您的 Azure Functions 应用相同的 Azure 区域的 Elastic Cloud 上设置 APM。

目前,仅支持 HTTP 和计时器触发器。其他触发器类型也可能被捕获,但捕获的上下文数据的数量可能会有所不同。

步骤 1:启用工作进程扩展编辑

Elastic APM 使用 工作进程扩展 来检测 Azure Functions。此功能默认情况下未启用,必须在您的 Azure Functions 应用中启用。请按照 Azure 文档 中的说明进行操作。

启用工作进程扩展后,这两行代码将启用 Elastic APM 的扩展

from elasticapm.contrib.serverless.azure import ElasticAPMExtension

ElasticAPMExtension.configure()

将它们放在 Python 文件的顶部,在函数定义之前。

步骤 2:安装 APM Python Agent编辑

您需要将 elastic-apm 添加为 Functions 应用的依赖项。只需将 elastic-apm 添加到您的 requirements.txt 文件中即可。我们建议将版本固定到代理的当前最新版本,并定期更新版本。

步骤 3:在 Azure Functions 上配置 APM编辑

APM Python 代理通过 应用设置 进行配置。然后,代理会将这些设置作为环境变量获取。

对于最小配置,您将需要 ELASTIC_APM_SERVER_URL 来设置 APM 数据的目标,以及一个 ELASTIC_APM_SECRET_TOKEN。如果您希望使用 APM API 密钥 而不是 APM 密钥,请在以下示例配置中使用 ELASTIC_APM_API_KEY 环境变量,而不是 ELASTIC_APM_SECRET_TOKEN

$ az functionapp config appsettings set --settings ELASTIC_APM_SERVER_URL=https://example.apm.northeurope.azure.elastic-cloud.com:443
$ az functionapp config appsettings set --settings ELASTIC_APM_SECRET_TOKEN=verysecurerandomstring

您可以选择 微调 Python 代理

就是这样;代理安装并运行后,将为 支持的技术 捕获跨度。您还可以使用 capture_span 来捕获自定义跨度,并且您可以使用 get_client 来检索用于捕获异常/消息的 Client 对象。