监视 AWS Lambda

要在 Instana UI 中查看与 AWS Lambda 相关的指标,需要安装和配置 Instana AWS 代理,它是以专门 AWS 模式运行的 Instana 主机代理。

更多信息,请参阅 AWS agent

要在 Instana UI 中查看 Lambda 跟踪,需要在 AWS Lambda 函数中添加 Instana Lambda 跟踪器。

监控 AWS Lambda 需要在 AWS 环境中安装 Instana AWS 代理,并将 Instana Lambda 跟踪器与 AWS Lambda 功能集成。

Instana AWS 代理在每个 AWS 账户和区域安装一次,它监控该账户和区域的所有 AWS Lambda 功能以及其他 AWS 服务。 更多信息,请参阅使用 Amazon Web Services ( AWS ) 代理监控 Amazon Web Services ( AWS )。 此传感器收集 AWS Lambda 函数的基础架构指标。 您还需要在 AWS Lambda 函数中添加 Instana Lambda 跟踪器,以便从函数中收集跟踪信息。 根据 Lambda 函数运行时间的不同,跟踪器是作为 AWS Lambda 函数的一个层安装的,还是手动安装的。

配置 AWS Lambda 监视

在 AWS Lambda 函数中安装 Instana Lambda 跟踪器

要捕获跟踪数据(请求级数据)并发送到 Instana 后端,需要在 AWS Lambda 函数中安装特定于运行时的 Instana Lambda 跟踪器。 要在 AWS Lambda 函数中安装 Instana Lambda 跟踪器,请参阅以下运行时的安装说明:

可选:为 Instana Lambda 追踪器配置更多设置

您可以配置下表中列出的本机 Lambda 跟踪通常支持的可选环境变量:

注意: 不要将 INSTANA_DISABLE_CA_CHECK 变量设置为 true ,除非您在本地使用 Instana,且无法使用已知根证书颁发机构 (CA) 的证书运行 Instana 后台。 如果启用此变量,您的 Lambda 就很容易受到此连接的 "中间人"(MITM)攻击。
环境变量 描述
INSTANA_TIMEOUT 为向 Instana 后台报告数据的 HTTP 请求设置超时。
INSTANA_ENDPOINT_PROXY 将此变量设为 http://my-proxy.tldhttp://user:password@my-proxy.tld ,可通过 HTTP 或 HTTPS 代理(在 Node.js 中支持,在 Python 中不支持)将数据报告路由至 Instana 后端。
INSTANA_EXTRA_HTTP_HEADERS 将此变量设置为以分号分隔的 HTTP 标头名称列表(用于与 Lambda 代理集成的触发器类型 API 网关或应用程序负载平衡器),以捕获 HTTP 标头。
INSTANA_SERVICE_NAME 定义自定义服务名称。
INSTANA_LOG_LEVEL 设置 Instana 软件包的日志级别。 可能的值是 debug, info, warn, 和 error (默认值: info )。
INSTANA_DEBUG 将此变量设置为任意值,可将日志级别设置为 debug
INSTANA_DISABLE_CA_CHECK 将此变量设为 true ,可在 Lambda 连接 Instana 后端时,禁止根据 Lambda 运行时包含的证书颁发机构 (CA) 列表验证服务器证书。 (适用于 @instana/aws-lambda@1.93.0/图层 25 及更高版本)

查看 Lambda 函数配置、指标、版本和触发器

您可以通过 Instana 查看有关 Lambda 函数的所有信息。

要查看 HTTP 属性、触发器以及 Lambda 函数的指标和版本详细信息,请完成以下步骤:

  1. 在 Instana UI 的侧栏中,选择 " 基础设施 "。
  2. 单击特定受监控的 Lambda 函数。

您可以看到一个主机仪表板,其中包含所有收集的指标和 Lambda 版本。 有关更多信息,请参阅 Lambda 配置、指标、版本和触发器

启用冷启动或超时警报

可以为 Lambda 函数的过度冷启动或超时配置智能警报

运行时 冷启动 超时数 注释
执行
Node.js 超时检测默认为禁用。 要启用超时检测,请参阅附加环境变量
.NET 或.NET Core
Java
Python
Ruby

要配置智能警报,请转到包含您要设置警报的Lambda函数的应用程序视角文档,然后添加智能警报:

  1. 在 Instana UI 的导航面板中,单击应用程序
  2. 选择应用程序。
  3. 单击添加智能警报
  4. 单击切换到高级模式
  5. 在 " 范围 "部分的 " 选择服务/端点 "字段中,添加以下筛选器之一:
    • Cloud Function As A Service > Cold Start is true
    • Cloud Function As A Service > Suspected Timeout is true
  6. 在 " 触发器 "部分的 " 所选蓝图 "字段中,选择 " 吞吐量 "。
  7. 阈值部分,选择一个适合您使用情况的阈值。 使用 "1 "可包含每次发生的情况,使用较大值则可在特定次数的冷启动或超时时违反规则。
  8. 使用时间阈值设置对警报行为进行微调。

层

使用 Lambda 扩展

NodeJS 层 71 版及更高版本包含 Lambda 扩展

该扩展可将向 Instana 后端发送数据的过程与其他 Lambda 函数进程分离,从而提高受监控 Lambda 函数的性能。 要利用这些性能改进,请将 Instana 层升级到包含此扩展的版本。

在内部,该扩展与语言库协同工作,缓冲并代理所有向 Instana 后端的请求。 在正常运行情况下,扩展不会延长 Lambda 函数的寿命。 只有在下列情况下才会延长使用寿命:

  • 关机请求,以确保后端缓冲区中的所有数据都已清除。
  • Lambda 函数发生故障并停止发送跨距时的情况。 在等待下一次调用之前,请等待 3 秒以查看是否发送了根范围。

要禁用扩展名,请在函数环境中将 INSTANA_DISABLE_LAMBDA_EXTENSION 变量为 TRUE

Lambda 监控的性能和运行时注意事项

工件尺寸

添加 Instana 的 Lambda 监控会增加部署的 Lambda 功能的大小。 额外的大小取决于特定语言层或语言库。 要获取特定 Instana Lambda 层版本的大小,请使用以下 shell 命令:

aws lambda get-layer-version --layer-name <layer_arn> --version-number <target_version> | jq .Content.Location | xargs -L 1 curl --output layer.zip
unzip -l layer.zip

性能影响

使用 Instana 监控 Lambda 函数时,性能影响主要取决于 Lambda 函数与 Instana 后端通信所需的时间。 每次执行结束时,Instana 提供的库都会向 Instana AWS Lambda 扩展或 Instana 租户单元发出阻塞调用,以报告执行结果。

对于使用 Lambda 扩展的函数,该过程在后台进行,一旦受监控代码准备就绪,受监控函数即可返回其响应。

对于未使用 Lambda 扩展的函数,只有当数据被发送到租户单元时,该流程才允许报告执行结果。