为基于.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 及更高版本上运行的监控应用程序。

配置用于跟踪的 AWS Lambda 函数

根据您的环境,您可以使用以下设置选项之一为基于.NET 或.NET Core 的 AWS Lambda 函数启用跟踪功能:

通过 AWS 网络控制台启用跟踪功能

要启用.NET 或.NET Core Lambda 函数的跟踪功能,请在 AWS Lambda UI 中完成以下步骤:

  1. 如以下步骤所示,将 Instana Lambda 层添加到函数中:

    1. 在 Lambda 函数的 " 配置 "选项卡中,单击 " ">" 添加层 "。

      层

    2. 在 "添加图层 "窗口中,选择 " 指定 ARN "。

    3. 在 " 指定 ARN "字段中复制并粘贴与您所在地区相匹配的 Instana Lambda 层的 Amazon 资源名称 (ARN)。 您可以在 Instana Lambda 层部分找到 Instana Lambda 层的正确 ARN。 然后点击 " 验证 "。

    4. 单击添加

  2. 配置以下环境变量,以连接 Instana 后台:

    环境变量
    CORECLR_ENABLE_PROFILING 1
    CORECLR_PROFILER {cf0d821e-299b-5307-a3d8-b283c03916dd}
    CORECLR_PROFILER_PATH /opt/instana_tracing/CoreProfiler.co
    DOTNET_STARTUP_HOOKS /opt/Instana.Tracing.Core.dll
    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

通过 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}

注意: 确保始终使用最新版本的 Instana Lambda 层。 定期更新您使用的图层版本,以便受益于新版本图层提供的功能和修复。

已知问题

在 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 函数的跟踪功能,请完成以下步骤:

  1. 在 Visual Studio 的功能项目中添加 Instana NuGet 软件包:

  2. 在 AWS Lambda UI 中,配置以下环境变量以连接 Instana 后端:

    环境变量
    CORECLR_ENABLE_PROFILING 1
    CORECLR_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