Status: Experimental
This document defines how to describe an instance of a function that runs without provisioning or managing of servers (also known as serverless functions or Function as a Service (FaaS)) with metrics.
The conventions described in this section are FaaS (function as a service) specific. When FaaS operations occur, metric events about those operations will be generated and reported to provide insights into the operations. By adding FaaS attributes to metric events it allows for finely tuned filtering.
Disclaimer: These are initial FaaS metric instruments and attributes but more may be added in the future.
The following metric instruments MUST be used to describe FaaS operations. They MUST be of the specified type and units.
Below is a table of FaaS invocation metric instruments.
Name | Instrument Type (*) | Unit | Unit (UCUM) | Description |
---|---|---|---|---|
faas.invoke_duration |
Histogram | milliseconds | ms |
Measures the duration of the invocation |
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.errors |
Counter | default unit | {errors} |
Number of invocation errors. |
faas.executions |
Counter | default unit | {executions} |
Number of successful invocations. |
faas.timeouts |
Counter | default unit | {timeouts} |
Number of invocation timeouts. |
Optionally, when applicable:
Name | Instrument Type (*) | Unit | Unit (UCUM) | Description |
---|---|---|---|---|
faas.mem_usage |
Histogram | Bytes | By |
Distribution of max memory usage per invocation |
faas.cpu_usage |
Histogram | milliseconds | ms |
Distribution of CPU usage per invocation |
faas.net_io |
Histogram | Bytes | By |
Distribution of net I/O usage per invocation |
Below is a table of the attributes to be included on FaaS metric events.
Name | Requirement Level | Notes and examples |
---|---|---|
faas.trigger |
Required | Type of the trigger on which the function is invoked. SHOULD be one of: datasource , http , pubsub , timer , other |
faas.invoked_name |
Required | Name of the invoked function. Example: my-function |
faas.invoked_provider |
Required | Cloud provider of the invoked function. Corresponds to the resource cloud.provider . Example: aws |
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.
For incoming FaaS executions, the function for which metrics are reported is already described by its FaaS resource attributes.
Outgoing FaaS executions 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.
Below are links to documentation regarding metrics that are available with different FaaS providers. This list is not exhaustive.