服务函数

另请参阅

FaaS 资源属性

状态: 开发中

类型: faas

描述: 一个无服务器实例。

Attributes

Stability需求级别Value Type描述Example Values
faas.nameDevelopment必需字符串此运行时实例执行的单个函数的名称。[1]my-function; myazurefunctionapp/some-function-name
cloud.resource_idDevelopment推荐字符串被监控的云资源的特定于云提供商的原生标识符(例如,AWS 上的 ARN、Azure 上的 完全限定资源 ID、GCP 上的 完整资源名称)[2]arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function; //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID; /subscriptions/<SUBSCRIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>
faas.instanceDevelopment推荐字符串执行环境 ID(字符串),可能会被重用于同一函数/函数版本的其他调用。[3]2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de
faas.max_memoryDevelopment推荐int已转换为字节的无服务器函数可用的内存量。[4]134217728
faas.versionDevelopment推荐字符串正在执行的函数的不可变版本。[5]26; pinkfroid-00002

[1] faas.name: 这是在 FaaS 平台上配置/部署的函数名称,通常与回调函数名称不同(后者可能存储在 code.namespace/code.function.name span 属性中)。

对于某些云提供商,上述定义可能存在歧义。对于列出的云提供商/产品,必须使用以下函数名称定义作为此属性(以及因此的跨度名称)

  • Azure: 完全名称 <FUNCAPP>/<FUNC>,即函数应用名称后跟一个正斜杠,再后跟函数名称(此形式也可在函数的资源 JSON 中看到)。这意味着必须使用跨度属性,因为 Azure 函数应用可以托管多个函数,这些函数通常会共享一个 TracerProvider(另请参阅 cloud.resource_id 属性)。

[2] cloud.resource_id: 在某些云提供商上,可能无法在启动时确定完整 ID,因此可能需要将 cloud.resource_id 设置为 span 属性。

cloud.resource_id 的确切值取决于云提供商。如果您设置了此属性,并且它们适用,则必须使用以下已知定义。

  • AWS Lambda: 函数 ARN。请注意不要直接使用“调用 ARN”,而是将任何 别名后缀替换为已解析的函数版本,因为同一个运行时实例可能可以使用多个不同的别名进行调用。
  • GCP: 资源的 URI
  • Azure: 被调用函数的 完全限定资源 ID,而不是函数应用,格式为 /subscriptions/<SUBSCRIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>。这意味着必须使用 span 属性,因为 Azure 函数应用可以托管多个通常会共享 TracerProvider 的函数。

[3] faas.instance: - **AWS Lambda:** 使用(完整的)日志流名称。

[4] faas.max_memory: 建议设置此属性,因为例如内存不足很容易导致 Java AWS Lambda 函数无法正常工作。在 AWS Lambda 上,环境变量 AWS_LAMBDA_FUNCTION_MEMORY_SIZE 提供了此信息(必须乘以 1,048,576)。

[5] faas.version: 根据云提供商和平台,使用

  • AWS Lambda: 函数版本(表示为十进制字符串的整数)。
  • Google Cloud Run (Services): 修订版本(即函数名称加上修订版本后缀)。
  • Google Cloud Functions: K_REVISION 环境变量的值。
  • Azure Functions: 不适用。请勿设置此属性。

注意:资源属性 faas.instance 与 span 属性 faas.invocation_id 不同。有关更多信息,请参阅 FaaS spans 的语义约定

使用 span 属性而不是资源属性

在某些情况下,FaaS 资源属性最好应用为 span 属性。有关更多信息,请参阅 FaaS 跟踪约定