Rename `faas.execution` to `faas.invocation_id` and change units for `faas.max_memory` (#3209)
This commit is contained in:
parent
1971550982
commit
0d0b9d0a7d
|
|
@ -0,0 +1,67 @@
|
||||||
|
file_format: 1.1.0
|
||||||
|
schema_url: https://opentelemetry.io/schemas/1.19.0
|
||||||
|
versions:
|
||||||
|
1.19.0:
|
||||||
|
spans:
|
||||||
|
changes:
|
||||||
|
# https://github.com/open-telemetry/opentelemetry-specification/pull/3209
|
||||||
|
- rename_attributes:
|
||||||
|
attribute_map:
|
||||||
|
faas.execution: faas.invocation_id
|
||||||
|
1.18.0:
|
||||||
|
1.17.0:
|
||||||
|
spans:
|
||||||
|
changes:
|
||||||
|
# https://github.com/open-telemetry/opentelemetry-specification/pull/2957
|
||||||
|
- rename_attributes:
|
||||||
|
attribute_map:
|
||||||
|
messaging.consumer_id: messaging.consumer.id
|
||||||
|
messaging.protocol: net.app.protocol.name
|
||||||
|
messaging.protocol_version: net.app.protocol.version
|
||||||
|
messaging.destination: messaging.destination.name
|
||||||
|
messaging.temp_destination: messaging.destination.temporary
|
||||||
|
messaging.destination_kind: messaging.destination.kind
|
||||||
|
messaging.message_id: messaging.message.id
|
||||||
|
messaging.conversation_id: messaging.message.conversation_id
|
||||||
|
messaging.message_payload_size_bytes: messaging.message.payload_size_bytes
|
||||||
|
messaging.message_payload_compressed_size_bytes: messaging.message.payload_compressed_size_bytes
|
||||||
|
messaging.rabbitmq.routing_key: messaging.rabbitmq.destination.routing_key
|
||||||
|
messaging.kafka.message_key: messaging.kafka.message.key
|
||||||
|
messaging.kafka.partition: messaging.kafka.destination.partition
|
||||||
|
messaging.kafka.tombstone: messaging.kafka.message.tombstone
|
||||||
|
messaging.rocketmq.message_type: messaging.rocketmq.message.type
|
||||||
|
messaging.rocketmq.message_tag: messaging.rocketmq.message.tag
|
||||||
|
messaging.rocketmq.message_keys: messaging.rocketmq.message.keys
|
||||||
|
messaging.kafka.consumer_group: messaging.kafka.consumer.group
|
||||||
|
1.16.0:
|
||||||
|
1.15.0:
|
||||||
|
spans:
|
||||||
|
changes:
|
||||||
|
# https://github.com/open-telemetry/opentelemetry-specification/pull/2743
|
||||||
|
- rename_attributes:
|
||||||
|
attribute_map:
|
||||||
|
http.retry_count: http.resend_count
|
||||||
|
1.14.0:
|
||||||
|
1.13.0:
|
||||||
|
spans:
|
||||||
|
changes:
|
||||||
|
# https://github.com/open-telemetry/opentelemetry-specification/pull/2614
|
||||||
|
- rename_attributes:
|
||||||
|
attribute_map:
|
||||||
|
net.peer.ip: net.sock.peer.addr
|
||||||
|
net.host.ip: net.sock.host.addr
|
||||||
|
1.12.0:
|
||||||
|
1.11.0:
|
||||||
|
1.10.0:
|
||||||
|
1.9.0:
|
||||||
|
1.8.0:
|
||||||
|
spans:
|
||||||
|
changes:
|
||||||
|
- rename_attributes:
|
||||||
|
attribute_map:
|
||||||
|
db.cassandra.keyspace: db.name
|
||||||
|
db.hbase.namespace: db.name
|
||||||
|
1.7.0:
|
||||||
|
1.6.1:
|
||||||
|
1.5.0:
|
||||||
|
1.4.0:
|
||||||
|
|
@ -75,10 +75,10 @@ groups:
|
||||||
- id: max_memory
|
- id: max_memory
|
||||||
type: int
|
type: int
|
||||||
brief: >
|
brief: >
|
||||||
The amount of memory available to the serverless function in MiB.
|
The amount of memory available to the serverless function converted to Bytes.
|
||||||
note: >
|
note: >
|
||||||
It's recommended to set this attribute since e.g. too little memory can easily
|
It's recommended to set this attribute since e.g. too little memory can easily
|
||||||
stop a Java AWS Lambda function from working correctly.
|
stop a Java AWS Lambda function from working correctly.
|
||||||
On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE`
|
On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE`
|
||||||
provides this information.
|
provides this information (which must be multiplied by 1,048,576).
|
||||||
examples: 128
|
examples: 134217728
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ groups:
|
||||||
serverless functions or Function as a Service (FaaS)) with spans.
|
serverless functions or Function as a Service (FaaS)) with spans.
|
||||||
attributes:
|
attributes:
|
||||||
- id: trigger
|
- id: trigger
|
||||||
brief: 'Type of the trigger which caused this function execution.'
|
brief: 'Type of the trigger which caused this function invocation.'
|
||||||
note: |
|
note: |
|
||||||
For the server/consumer span on the incoming side,
|
For the server/consumer span on the incoming side,
|
||||||
`faas.trigger` MUST be set.
|
`faas.trigger` MUST be set.
|
||||||
|
|
@ -37,9 +37,9 @@ groups:
|
||||||
- id: other
|
- id: other
|
||||||
value: 'other'
|
value: 'other'
|
||||||
brief: 'If none of the others apply'
|
brief: 'If none of the others apply'
|
||||||
- id: execution
|
- id: invocation_id
|
||||||
type: string
|
type: string
|
||||||
brief: 'The execution ID of the current function execution.'
|
brief: 'The invocation ID of the current function invocation.'
|
||||||
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
|
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
|
||||||
|
|
||||||
- id: faas_span.datasource
|
- id: faas_span.datasource
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ Below is a table of FaaS invocation metric instruments.
|
||||||
| `faas.init_duration` | Histogram | milliseconds | `ms` | Measures the duration of the function's initialization, such as a cold start |
|
| `faas.init_duration` | Histogram | milliseconds | `ms` | Measures the duration of the function's initialization, such as a cold start |
|
||||||
| `faas.coldstarts` | Counter | default unit | `{coldstarts}` | Number of invocation cold starts. |
|
| `faas.coldstarts` | Counter | default unit | `{coldstarts}` | Number of invocation cold starts. |
|
||||||
| `faas.errors` | Counter | default unit | `{errors}` | Number of invocation errors. |
|
| `faas.errors` | Counter | default unit | `{errors}` | Number of invocation errors. |
|
||||||
| `faas.executions` | Counter | default unit | `{executions}` | Number of successful invocations. |
|
| `faas.invocations` | Counter | default unit | `{invocations}` | Number of successful invocations. |
|
||||||
| `faas.timeouts` | Counter | default unit | `{timeouts}` | Number of invocation timeouts. |
|
| `faas.timeouts` | Counter | default unit | `{timeouts}` | Number of invocation timeouts. |
|
||||||
|
|
||||||
Optionally, when applicable:
|
Optionally, when applicable:
|
||||||
|
|
@ -65,9 +65,9 @@ Below is a table of the attributes to be included on FaaS metric events.
|
||||||
| `faas.invoked_region` | Required | Cloud provider region of invoked function. Corresponds to resource `cloud.region`. Example: `us-east-1` |
|
| `faas.invoked_region` | Required | Cloud provider region of invoked function. Corresponds to resource `cloud.region`. Example: `us-east-1` |
|
||||||
|
|
||||||
More details on these attributes, the function name and the difference compared to the faas.invoked_name can be found at the related [FaaS tracing specification](../../trace/semantic_conventions/faas.md).
|
More details on these attributes, the function name and the difference compared to the faas.invoked_name can be found at the related [FaaS tracing specification](../../trace/semantic_conventions/faas.md).
|
||||||
For incoming FaaS executions, the function for which metrics are reported is already described by its [FaaS resource attributes](../../resource/semantic_conventions/faas.md).
|
For incoming FaaS invocations, the function for which metrics are reported is already described by its [FaaS resource attributes](../../resource/semantic_conventions/faas.md).
|
||||||
Outgoing FaaS executions are identified using the `faas.invoked_*` attributes above.
|
Outgoing FaaS invocations are identified using the `faas.invoked_*` attributes above.
|
||||||
`faas.trigger` SHOULD be included in all metric events while `faas.invoked_*` attributes apply on outgoing FaaS execution events only.
|
`faas.trigger` SHOULD be included in all metric events while `faas.invoked_*` attributes apply on outgoing FaaS invocation events only.
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ See also:
|
||||||
| `faas.id` | string | The unique ID of the single function that this runtime instance executes. [2] | `arn:aws:lambda:us-west-2:123456789012:function:my-function` | Recommended |
|
| `faas.id` | string | The unique ID of the single function that this runtime instance executes. [2] | `arn:aws:lambda:us-west-2:123456789012:function:my-function` | Recommended |
|
||||||
| `faas.version` | string | The immutable version of the function being executed. [3] | `26`; `pinkfroid-00002` | Recommended |
|
| `faas.version` | string | The immutable version of the function being executed. [3] | `26`; `pinkfroid-00002` | Recommended |
|
||||||
| `faas.instance` | string | The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. [4] | `2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de` | Recommended |
|
| `faas.instance` | string | The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version. [4] | `2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de` | Recommended |
|
||||||
| `faas.max_memory` | int | The amount of memory available to the serverless function in MiB. [5] | `128` | Recommended |
|
| `faas.max_memory` | int | The amount of memory available to the serverless function converted to Bytes. [5] | `134217728` | Recommended |
|
||||||
|
|
||||||
**[1]:** This is the name of the function as configured/deployed on the FaaS
|
**[1]:** This is the name of the function as configured/deployed on the FaaS
|
||||||
platform and is usually different from the name of the callback
|
platform and is usually different from the name of the callback
|
||||||
|
|
@ -68,10 +68,10 @@ The exact value to use for `faas.id` depends on the cloud provider:
|
||||||
|
|
||||||
**[4]:** * **AWS Lambda:** Use the (full) log stream name.
|
**[4]:** * **AWS Lambda:** Use the (full) log stream name.
|
||||||
|
|
||||||
**[5]:** It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.
|
**[5]:** It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information (which must be multiplied by 1,048,576).
|
||||||
<!-- endsemconv -->
|
<!-- endsemconv -->
|
||||||
|
|
||||||
Note: The resource attribute `faas.instance` differs from the span attribute `faas.execution`. For more information see the [Semantic conventions for FaaS spans](../../trace/semantic_conventions/faas.md#difference-between-execution-and-instance).
|
Note: The resource attribute `faas.instance` differs from the span attribute `faas.invocation_id`. For more information see the [Semantic conventions for FaaS spans](../../trace/semantic_conventions/faas.md#difference-between-invocation-and-instance).
|
||||||
|
|
||||||
## Using span attributes instead of resource attributes
|
## Using span attributes instead of resource attributes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ See also the [additional instructions for instrumenting AWS Lambda](instrumentat
|
||||||
|
|
||||||
- [General Attributes](#general-attributes)
|
- [General Attributes](#general-attributes)
|
||||||
* [Function Name](#function-name)
|
* [Function Name](#function-name)
|
||||||
* [Difference between execution and instance](#difference-between-execution-and-instance)
|
* [Difference between invocation and instance](#difference-between-invocation-and-instance)
|
||||||
- [Incoming Invocations](#incoming-invocations)
|
- [Incoming Invocations](#incoming-invocations)
|
||||||
* [Incoming FaaS Span attributes](#incoming-faas-span-attributes)
|
* [Incoming FaaS Span attributes](#incoming-faas-span-attributes)
|
||||||
* [Resource attributes as incoming FaaS span attributes](#resource-attributes-as-incoming-faas-span-attributes)
|
* [Resource attributes as incoming FaaS span attributes](#resource-attributes-as-incoming-faas-span-attributes)
|
||||||
|
|
@ -37,8 +37,8 @@ If Spans following this convention are produced, a Resource of type `faas` MUST
|
||||||
<!-- semconv faas_span -->
|
<!-- semconv faas_span -->
|
||||||
| Attribute | Type | Description | Examples | Requirement Level |
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `faas.trigger` | string | Type of the trigger which caused this function execution. [1] | `datasource` | Recommended |
|
| `faas.trigger` | string | Type of the trigger which caused this function invocation. [1] | `datasource` | Recommended |
|
||||||
| `faas.execution` | string | The execution ID of the current function execution. | `af9d5aa4-a685-4c5f-a22b-444f80b3cc28` | Recommended |
|
| `faas.invocation_id` | string | The invocation ID of the current function invocation. | `af9d5aa4-a685-4c5f-a22b-444f80b3cc28` | Recommended |
|
||||||
|
|
||||||
**[1]:** For the server/consumer span on the incoming side,
|
**[1]:** For the server/consumer span on the incoming side,
|
||||||
`faas.trigger` MUST be set.
|
`faas.trigger` MUST be set.
|
||||||
|
|
@ -73,15 +73,15 @@ purpose. It is also highly likely that Span name will contain the function name
|
||||||
weaker "SHOULD" requirement). Consumers that needs such guarantee can use
|
weaker "SHOULD" requirement). Consumers that needs such guarantee can use
|
||||||
`faas.name` attribute as the source.
|
`faas.name` attribute as the source.
|
||||||
|
|
||||||
### Difference between execution and instance
|
### Difference between invocation and instance
|
||||||
|
|
||||||
For performance reasons (e.g. [AWS lambda], or [Azure functions]), FaaS providers allocate an execution environment for a single instance of a function that is used to serve multiple requests.
|
For performance reasons (e.g. [AWS lambda], or [Azure functions]), FaaS providers allocate an execution environment for a single instance of a function that is used to serve multiple requests.
|
||||||
Developers exploit this fact to solve the **cold start** issue, caching expensive resource computations between different function executions.
|
Developers exploit this fact to solve the **cold start** issue, caching expensive resource computations between different function invocations.
|
||||||
Furthermore, FaaS providers encourage this behavior, e.g. [Google functions].
|
Furthermore, FaaS providers encourage this behavior, e.g. [Google functions].
|
||||||
The `faas.instance` resource attribute MAY be set to help correlate function executions that belong to the same execution environment.
|
The `faas.instance` resource attribute MAY be set to help correlate function invocations that belong to the same execution environment.
|
||||||
The span attribute `faas.execution` differs from the [resource attribute][FaaS resource attributes] `faas.instance` in the following:
|
The span attribute `faas.invocation_id` differs from the [resource attribute][FaaS resource attributes] `faas.instance` in the following:
|
||||||
|
|
||||||
- `faas.execution` refers to the current request ID handled by the function;
|
- `faas.invocation_id` refers to the ID of the current invocation of the function;
|
||||||
- `faas.instance` refers to the execution environment ID of the function.
|
- `faas.instance` refers to the execution environment ID of the function.
|
||||||
|
|
||||||
[AWS lambda]: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
|
[AWS lambda]: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
|
||||||
|
|
@ -100,7 +100,7 @@ For incoming FaaS spans, the span kind MUST be `Server`.
|
||||||
| Attribute | Type | Description | Examples | Requirement Level |
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `faas.coldstart` | boolean | A boolean that is true if the serverless function is executed for the first time (aka cold-start). | | Recommended |
|
| `faas.coldstart` | boolean | A boolean that is true if the serverless function is executed for the first time (aka cold-start). | | Recommended |
|
||||||
| `faas.trigger` | string | Type of the trigger which caused this function execution. [1] | `datasource` | Required |
|
| `faas.trigger` | string | Type of the trigger which caused this function invocation. [1] | `datasource` | Required |
|
||||||
|
|
||||||
**[1]:** For the server/consumer span on the incoming side,
|
**[1]:** For the server/consumer span on the incoming side,
|
||||||
`faas.trigger` MUST be set.
|
`faas.trigger` MUST be set.
|
||||||
|
|
@ -197,9 +197,9 @@ The function responsibility is to provide an answer to an inbound HTTP request.
|
||||||
### PubSub
|
### PubSub
|
||||||
|
|
||||||
A function is set to be executed when messages are sent to a messaging system.
|
A function is set to be executed when messages are sent to a messaging system.
|
||||||
In this case, multiple messages could be batch and forwarded at once to the same function execution.
|
In this case, multiple messages could be batch and forwarded at once to the same function invocation.
|
||||||
Therefore, a different root span of type `faas` MUST be created for each message processed by the function, following the [Messaging systems semantic conventions](messaging.md).
|
Therefore, a different root span of type `faas` MUST be created for each message processed by the function, following the [Messaging systems semantic conventions](messaging.md).
|
||||||
This way, it is possible to correlate each individual message with its execution sender.
|
This way, it is possible to correlate each individual message with its invocation sender.
|
||||||
|
|
||||||
### Timer
|
### Timer
|
||||||
|
|
||||||
|
|
@ -230,7 +230,7 @@ This example shows the FaaS attributes for a (non-FaaS) process hosted on Google
|
||||||
| Span | `faas.invoked_provider` | `"aws"` | n/a |
|
| Span | `faas.invoked_provider` | `"aws"` | n/a |
|
||||||
| Span | `faas.invoked_region` | `"eu-central-1"` | n/a |
|
| Span | `faas.invoked_region` | `"eu-central-1"` | n/a |
|
||||||
| Span | `faas.trigger` | n/a | `"http"` |
|
| Span | `faas.trigger` | n/a | `"http"` |
|
||||||
| Span | `faas.execution` | n/a | `"af9d5aa4-a685-4c5f-a22b-444f80b3cc28"` |
|
| Span | `faas.invocation_id` | n/a | `"af9d5aa4-a685-4c5f-a22b-444f80b3cc28"` |
|
||||||
| Span | `faas.coldstart` | n/a | `true` |
|
| Span | `faas.coldstart` | n/a | `true` |
|
||||||
| Resource | `faas.name` | n/a | `"my-lambda-function"` |
|
| Resource | `faas.name` | n/a | `"my-lambda-function"` |
|
||||||
| Resource | `faas.id` | n/a | `"arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function"` |
|
| Resource | `faas.id` | n/a | `"arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function"` |
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ Lambda `Context`.
|
||||||
|
|
||||||
The following attributes SHOULD be set:
|
The following attributes SHOULD be set:
|
||||||
|
|
||||||
- [`faas.execution`][faas] - The value of the AWS Request ID, which is always available through an accessor on the Lambda `Context`.
|
- [`faas.invocation_id`][faas] - The value of the AWS Request ID, which is always available through an accessor on the Lambda `Context`.
|
||||||
- [`faas.id`][faasres] - The value of the invocation ARN
|
- [`faas.id`][faasres] - The value of the invocation ARN
|
||||||
for the function, which is always available through an accessor on the
|
for the function, which is always available through an accessor on the
|
||||||
Lambda `Context`, modified as follows: Discard all parts beyond the seventh (when split on `:`;
|
Lambda `Context`, modified as follows: Discard all parts beyond the seventh (when split on `:`;
|
||||||
|
|
@ -169,7 +169,7 @@ Function F: | Span Function |
|
||||||
| Parent | | Span Client |
|
| Parent | | Span Client |
|
||||||
| SpanKind | `CLIENT` | `SERVER` |
|
| SpanKind | `CLIENT` | `SERVER` |
|
||||||
| Status | `Ok` | `Ok` |
|
| Status | `Ok` | `Ok` |
|
||||||
| `faas.execution` | | `79104EXAMPLEB723` |
|
| `faas.invocation_id` | | `79104EXAMPLEB723` |
|
||||||
| `faas.id` | | `arn:aws:lambda:us-west-2:123456789012:function:my-function` |
|
| `faas.id` | | `arn:aws:lambda:us-west-2:123456789012:function:my-function` |
|
||||||
| `faas.trigger` | | `http` |
|
| `faas.trigger` | | `http` |
|
||||||
| `cloud.account.id` | | `12345678912` |
|
| `cloud.account.id` | | `12345678912` |
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue