为基于.NET 或.NET Core 的 AWS Lambda 函数设置本地跟踪
您可以为 AWS 用.NET 或.NET Core 编写的 Lambda 函数设置 Instana AutoTrace。
更多信息,请参阅 Instana AutoTrace。
要为基于.NET 的 AWS Lambda 函数设置本地跟踪,需要将 Instana Lambda 层添加到 Lambda 函数中。 启用跟踪后,您可以在 Instana UI 中查看 Lambda 函数的跟踪数据。
支持的运行时
Instana 支持在.NET 6 及更高版本上运行的监控应用程序。
先决条件
为 Lambda 监控设置 AWS 代理 ,以收集 Instana 无法从 AWS Lambda 运行时内部收集的版本和运行时指标。
配置用于跟踪的 AWS Lambda 函数
根据您的环境,您可以使用以下设置选项之一为基于.NET 或.NET Core 的 AWS Lambda 函数启用跟踪功能:
使用 Instana Lambda 层:您可以通过 AWS 网络控制台或以下任何 AWS 管理工具启用对 Lambda 函数的跟踪:
手动安装
instana/aws-lambda软件包 :对于 FedRAMP-compliant 环境,您需要手动安装 Instana Lambda 软件包。
通过 AWS 网络控制台启用跟踪功能
要启用.NET 或.NET Core Lambda 函数的跟踪功能,请在 AWS Lambda UI 中完成以下步骤:
如以下步骤所示,将 Instana Lambda 层添加到函数中:
在 Lambda 函数的 " 配置 "选项卡中,单击 " 层 ">" 添加层 "。

在 "添加图层 "窗口中,选择 " 指定 ARN "。
在 " 指定 ARN "字段中复制并粘贴与您所在地区相匹配的 Instana Lambda 层的 Amazon 资源名称 (ARN)。 您可以在 Instana Lambda 层部分找到 Instana Lambda 层的正确 ARN。 然后点击 " 验证 "。
单击添加。
配置以下环境变量,以连接 Instana 后台:
环境变量 值 CORECLR_ENABLE_PROFILING1CORECLR_PROFILER{cf0d821e-299b-5307-a3d8-b283c03916dd}CORECLR_PROFILER_PATH/opt/instana_tracing/CoreProfiler.coDOTNET_STARTUP_HOOKS/opt/Instana.Tracing.Core.dllINSTANA_AGENT_KEY<your_instana_agent_key>INSTANA_ENDPOINT_URL<serverless_instana_endpoint>INSTANA_AWS_ACCOUNT_ID<your_aws_account_id>LAMBDA_HANDLER<Assembly::Namespace.ClassName::MethodName>请确保您使用的是以
https://serverless-开头的正确的 Instana 端点 URL。 有关详细信息,请参阅 无服务器监控的端点。注意: 如果您的默认处理程序不使用Assembly::Namespace.ClassName::MethodName格式,那么请将默认处理程序设置为LAMBDA_HANDLER格式。 否则,就不要设置变量或将其留空。 如果 Instana UI 中缺少显示跟踪和基础架构实体之间联系的关联数据,请使用LAMBDA_HANDLER设置正确的格式。您也可以从 Instana UI 获取这些环境变量的正确值。 要获取这些环境变量的正确值,请在 Instana UI 中单击更多 > 代理 > 安装代理 > 平台: AWS > 技术: AWS Lambda。
通过 AWS 命令行界面启用跟踪功能
如果想自动将 Instana 整合到 AWS Lambdas 中,请参阅以下 AWS CLI 命令示例:
# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
--function-name $YOUR_LAMBDA_FUNCTION_NAME \
--layers $INSTANA_LAYER_ARN \
--environment "Variables={CORECLR_ENABLE_PROFILING=1, CORECLR_PROFILER=\"{cf0d821e-299b-5307-a3d8-b283c03916dd}\", CORECLR_PROFILER_PATH=/opt/instana_tracing/CoreProfiler.so, DOTNET_STARTUP_HOOKS=/opt/Instana.Tracing.Core.dll, INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , ...}"
Instana Lambda 层
AWS Lambda layers for.NET 最新版本的 ARN 根据地区划分如下:
| 区域 | ARN |
|---|---|
af-south-1 |
arn:aws:lambda:af-south-1:410797082306:layer:instana-dotnetcore:25 |
ap-east-1 |
arn:aws:lambda:ap-east-1:410797082306:layer:instana-dotnetcore:25 |
ap-northeast-1 |
arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-dotnetcore:25 |
ap-northeast-2 |
arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-dotnetcore:25 |
ap-northeast-3 |
arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-dotnetcore:25 |
ap-south-1 |
arn:aws:lambda:ap-south-1:410797082306:layer:instana-dotnetcore:25 |
ap-south-2 |
arn:aws:lambda:ap-south-2:410797082306:layer:instana-dotnetcore:25 |
ap-southeast-1 |
arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-dotnetcore:25 |
ap-southeast-2 |
arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-dotnetcore:25 |
ap-southeast-3 |
arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-dotnetcore:25 |
ap-southeast-4 |
arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-dotnetcore:25 |
ca-central-1 |
arn:aws:lambda:ca-central-1:410797082306:layer:instana-dotnetcore:25 |
| `cn-north-1' | arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-dotnetcore:23 |
| `cn-northwest-1' | arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-dotnetcore:23 |
eu-central-1 |
arn:aws:lambda:eu-central-1:410797082306:layer:instana-dotnetcore:24 |
eu-central-2 |
arn:aws:lambda:eu-central-2:410797082306:layer:instana-dotnetcore:25 |
eu-north-1 |
arn:aws:lambda:eu-north-1:410797082306:layer:instana-dotnetcore:25 |
eu-south-1 |
arn:aws:lambda:eu-south-1:410797082306:layer:instana-dotnetcore:25 |
eu-south-2 |
arn:aws:lambda:eu-south-2:410797082306:layer:instana-dotnetcore:25 |
eu-west-1 |
arn:aws:lambda:eu-west-1:410797082306:layer:instana-dotnetcore:24 |
eu-west-2 |
arn:aws:lambda:eu-west-2:410797082306:layer:instana-dotnetcore:25 |
eu-west-3 |
arn:aws:lambda:eu-west-3:410797082306:layer:instana-dotnetcore:24 |
il-central-1 |
arn:aws:lambda:il-central-1:410797082306:layer:instana-dotnetcore:25 |
me-central-1 |
arn:aws:lambda:me-central-1:410797082306:layer:instana-dotnetcore:25 |
me-south-1 |
arn:aws:lambda:me-south-1:410797082306:layer:instana-dotnetcore:25 |
sa-east-1 |
arn:aws:lambda:sa-east-1:410797082306:layer:instana-dotnetcore:24 |
us-east-1 |
arn:aws:lambda:us-east-1:410797082306:layer:instana-dotnetcore:25 |
us-east-2 |
arn:aws:lambda:us-east-2:410797082306:layer:instana-dotnetcore:25 |
us-west-1 |
arn:aws:lambda:us-west-1:410797082306:layer:instana-dotnetcore:24 |
us-west-2 |
arn:aws:lambda:us-west-2:410797082306:layer:instana-dotnetcore:24 |
例如,ARN 模式为 arn:aws:lambda:${region}:410797082306:layer:instana-dotnetcore:${layer-version}。 AWS 中国各地区的 ARN 模式为 arn:aws-cn:lambda:${region}:107998019096:layer:instana-dotnetcore:${layer-version}。
已知问题
在 AWS Lambda 函数执行期间,日志中可能会出现以下错误。 此错误是 Instana 的内部错误,并不意味着 Lambda 函数停止工作或导致错误。 如果可以在 Instana UI 中找到痕迹,则可以忽略此消息。
Error sending traces. Exception: System.Threading.Tasks.TaskCanceledException, Message:The request was canceled due to the configured HttpClient.Timeout of 2 seconds elapsing. (calling https://serverless.instana.io/bundle), Original exception: A task was canceled., CallStack: at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
手动安装 instana/aws-lambda 软件包
对于 FedRAMP-complaint 环境,您必须手动安装 @instana/aws-lambda ,而不是使用 Instana Lambda 层。
要启用.NET 或.NET Core Lambda 函数的跟踪功能,请完成以下步骤:
在 Visual Studio 的功能项目中添加 Instana NuGet 软件包:
- 将 Instana.Tracing.CoreNuGet 软件包。
- 如果 Lambda 已部署到 Alpine Linux ,请将 Instana.Tracing.Core.Rewriter.AlpineNuGet 软件包。 否则,请将 Instana.Tracing.Core.Rewriter.LinuxNuGet 软件包。
在 AWS Lambda UI 中,配置以下环境变量以连接 Instana 后端:
环境变量 值 CORECLR_ENABLE_PROFILING1CORECLR_PROFILER{cf0d821e-299b-5307-a3d8-b283c03916dd}CORECLR_PROFILER_PATH<path to /instana_tracing/CoreProfiler.co file accessible from Lambda>DOTNET_STARTUP_HOOKS<path to /Instana.Tracing.Core.dll file accessible from Lambda>INSTANA_AGENT_KEY<your_instana_agent_key>INSTANA_ENDPOINT_URL<serverless_instana_endpoint>INSTANA_AWS_ACCOUNT_ID<your_aws_account_id>LAMBDA_HANDLER<Assembly::Namespace.ClassName::MethodName>请确保您使用的是以
https://serverless-开头的正确的 Instana 端点 URL。 有关详细信息,请参阅 无服务器监控的端点。注意: 如果您的默认处理程序不使用Assembly::Namespace.ClassName::MethodName格式,那么请将默认处理程序设置为LAMBDA_HANDLER格式。 否则,就不要设置变量或将其留空。 如果 Instana UI 中缺少显示跟踪和基础架构实体之间联系的关联数据,请使用LAMBDA_HANDLER设置正确的格式。您也可以从 Instana UI 获取这些环境变量的正确值。 要获取这些环境变量的正确值,请在 Instana UI 中单击更多 > 代理 > 安装代理 > 平台: AWS > 技术: AWS Lambda。