服务函数
另请参阅
FaaS 资源属性
状态:
类型: faas
描述: 一个无服务器实例。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
faas.name | 必需 | 字符串 | 此运行时实例执行的单个函数的名称。[1] | my-function; myazurefunctionapp/some-function-name | |
cloud.resource_id | 推荐 | 字符串 | 被监控的云资源的特定于云提供商的原生标识符(例如,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.instance | 推荐 | 字符串 | 执行环境 ID(字符串),可能会被重用于同一函数/函数版本的其他调用。[3] | 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de | |
faas.max_memory | 推荐 | int | 已转换为字节的无服务器函数可用的内存量。[4] | 134217728 | |
faas.version | 推荐 | 字符串 | 正在执行的函数的不可变版本。[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 跟踪约定。