Azure Functions
编辑Azure Functions
编辑.NET APM 代理可以追踪在 Azure Functions 应用程序中 HTTP 触发的函数调用。
先决条件
编辑您需要一个 APM 服务器来发送 APM 数据。如果您尚未设置,请按照 APM 快速入门 进行操作。您将需要您的APM 服务器 URL 和 APM 服务器密钥令牌(或API 密钥)来配置下面的 APM 代理。
您还需要一个要监控的 Azure Function 应用。如果您没有现有的应用,可以按照此 Azure 指南创建一个。
您还可以查看并使用这个已集成 Elastic APM 的 Azure Functions 示例应用。
Azure Functions 隔离工作进程模型
编辑步骤 1:添加 NuGet 包
编辑将 Elastic.Apm.Azure.Functions
NuGet 包添加到您的 Azure Functions 项目
dotnet add package Elastic.Apm.Azure.Functions
步骤 2:添加追踪中间件
编辑为了让 APM 代理追踪 Azure Functions 调用,必须在您的 Azure Functions 应用程序中使用 Elastic.Apm.Azure.Functions.ApmMiddleware
。
using Elastic.Apm.Azure.Functions; using Microsoft.Extensions.Hosting; var host = new HostBuilder() .ConfigureFunctionsWebApplication(builder => { builder.UseMiddleware<ApmMiddleware>(); }) .Build(); host.Run();
步骤 3:配置 APM 代理
编辑APM 代理可以使用环境变量进行配置。
ELASTIC_APM_SERVER_URL: <your APM server URL from the prerequisites step> ELASTIC_APM_SECRET_TOKEN: <your APM secret token from the prerequisites step> ELASTIC_APM_ENVIRONMENT: <your environment> ELASTIC_APM_SERVICE_NAME: <your service name> (optional)
如果未配置 ELASTIC_APM_SERVICE_NAME
,代理将使用回退值。
- 本地开发 - 将使用发现的服务名称(入口程序集名称)。
-
Azure - 将使用 Function App 名称(从
WEBSITE_SITE_NAME
环境变量中检索)。
在本地开发中配置
在本地开发 Function 时,您可以通过 local.settings.json
文件提供环境变量来配置代理。
例如
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "ELASTIC_APM_ENVIRONMENT": "Development", "ELASTIC_APM_SERVICE_NAME": "MyServiceName", "ELASTIC_APM_SERVER_URL": "https://my-serverless-project.apm.eu-west-1.aws.elastic.cloud:443", "ELASTIC_APM_API_KEY": "MySecureApiKeyFromApmServer==" } }
在 Azure 中配置
使用环境变量允许您使用 Azure 门户中的应用程序设置,使您能够在不需要重新部署代码的情况下更新设置。
在 Azure 门户中,打开您的 Function App 的设置 > 环境变量,并根据需要配置 ELASTIC_APM_* 变量。
例如
限制
编辑由于担心意外增加 Azure Functions 的成本(对于消耗计划),Azure Functions 仪表目前不在后台收集系统指标。