监控 Azure Functions

编辑

先决条件

编辑

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

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

步骤 1:启用 Worker 扩展

编辑

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

启用 Worker 扩展后,以下两行代码将启用 Elastic APM 的扩展

from elasticapm.contrib.serverless.azure import ElasticAPMExtension

ElasticAPMExtension.configure()

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

步骤 2:安装 APM Python 代理

编辑

您需要将 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 对象。